python线程池共享数据

由于pyton process不共享内存,如果需要共享数据,需要采用它只有的Value或者Manager方式

#!/usr/env python
import multiprocessing as mp
from multiprocessing import Value, Array
import threading
import time
import pdb
 
def init(args):
    ''' store the counter for later use '''
    global counter
    counter = args

def run():
    global counter
    for i in range(0, 3):
        time.sleep(1);
        with counter.get_lock():
            counter.value += 1
        print counter.value

if __name__ == "__main__":
    counter = Value('i', 0)
    pool = mp.Pool(processes = 5,initializer = init, initargs = (counter, ))
    print "I am set counter:%s" % (counter.value)
    for i in range(0, 10):
        pdb.set_trace()
        res = pool.apply_async(run, ())
    pool.close()
    pool.join()
    print "I am set counter:%s" % (counter.value)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容