我写了一个函数来修改传入的字典。但是,当我使用多处理模块并行化代码时,它表现出与串行运行时不同的行为。字典没有被修改。
下面附上我的问题的玩具示例。使用 map_async 运行时不会修改字典,但在 for 循环中运行时会修改字典。感谢您澄清我的困惑!
#!/usr/bin/env python
from multiprocessing import Pool
def main1(x):
x['a'] = 1
print x
return 1
def main2(x):
x['b'] = 2
print x
p = Pool(2)
d = {1:{}, 2:{}}
r = p.map_async(main1, d.values())
print r.get()
print "main1", d
for x in d.values():
main2(x)
print "main2", d