python多线程threading示例

def threadArr(num,func,arr,**kwargs):
    import threading,sys
    from myfunkr import splitArr
    type = sys.getfilesystemencoding()

    splitArrResult = splitArr(arr, num)
    print '多线程开始...'.decode('utf-8').encode(type)
    threadArr = []

    for i in range(num):
        #*args是接收任意多的参数变量 也可以没有 获取到的是一个数组
        t = threading.Thread(target=func, args=(splitArrResult[i], kwargs))
        threadArr.append(t)

    for x in threadArr:
        x.start()
    # 有join 可以等上面都执行完了再继续主线程
    x.join()
    print '多线程结束...'.decode('utf-8').encode(type)

def func(arr,kwargs):
    for aa in arr:
        threadLock.acquire()
        print aa,kwargs['key1'],kwargs['key2']
        threadLock.release()

if __name__=='__main__':
    arr=range(100)
    import threading
    threadLock = threading.Lock()
    #threadArr(20,func,arr,**{'key1':'value1','key2':'value2'})
    kwother={'key1':'value1','key2':'value2'}
    #func(arr,**kwother)
    threadArr(20,func,arr,**kwother)

运行结果:

1 value1 value2
2 value1 value2
3 value1 value2
4 value1 value2
5 value1 value2
6 value1 value2
10 value1 value2
7 value1 value2
......

函数func的参数kwargs是一个可变关键字参数 调用时要注意
锁要在主进程那边先调用 之后在函数里面使用才可以

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 8,122评论 0 9
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,120评论 0 10
  • 一. 操作系统概念 操作系统位于底层硬件与应用软件之间的一层.工作方式: 向下管理硬件,向上提供接口.操作系统进行...
    月亮是我踢弯得阅读 11,203评论 3 28
  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 4,529评论 0 5
  • 篇文章在小学时学过,当时就只知道背。今天在整理小学的书时,突然翻到这篇文章,现在仔细品读,觉得蕴涵着很多道理。 我...
    16a28421fe1a阅读 1,508评论 0 0