您好,我正在尝试使用多处理并行定义字典的值。当函数 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/

10-12 19:38