您好,我正在尝试使用多处理并行定义字典的值。当函数 f() 在“池”之外调用时,字典值设置正确。然而,在池调用中它失败了。
我究竟做错了什么?谢谢。
from multiprocessing import Pool
hits={}
def f(x):
hits[x] = x #this will involve a complex operation
f('000')
print hits['000']
if __name__ == '__main__':
pool = Pool(processes=2)
inputs = ['a','b','c']
result = pool.map(f, inputs)
print hits['a']
最佳答案
您生成了一堆继承 hits
的当前值的子进程。每个子进程获得自己的 hits
副本并修改它,然后退出,删除 hits
的进程本地副本。multiprocessing.Pool.map()
的预期用途是使用您忽略的返回值。每个进程都可以返回它的 hits
副本,你最终加入这些副本。
关于python - Python中的多线程/处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7896321/