美文网首页
python多线程threading示例

python多线程threading示例

作者: pixyon | 来源:发表于2019-10-27 23:09 被阅读0次
    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是一个可变关键字参数 调用时要注意
    锁要在主进程那边先调用 之后在函数里面使用才可以

    相关文章

      网友评论

          本文标题:python多线程threading示例

          本文链接:https://www.haomeiwen.com/subject/ixzmvctx.html