以下代码应在Python 2和3中跨平台运行(即在Windows上也是如此)。它使用进程池初始化程序将管理器字典设置为每个子进程中的全局对象。
仅供参考:
- 管理员命令不需要使用锁。
Pool
默认情况下,进程数为CPU数。如果您对结果不感兴趣,可以使用
apply_async
代替map
。import multiprocessing
import timedef merge(d2):
time.sleep(1) # some time consuming stuffs
for key in d2.keys():
if key in d1:
d1[key] += d2[key]
else:
d1[key] = d2[key]def init(d):
global d1
d1 = dif name == ‘main’:
d1 = multiprocessing.Manager().dict()pool = multiprocessing.Pool(initializer=init, initargs=(d1, ))l = [{ x % 5 : x } for x in range(10)]for item in l: pool.apply_async(merge, (item,))pool.close()pool.join()print(l)print(d1)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)