可能重复:
Python 多处理全局变量更新未返回给父级
我正在使用一台具有许多内核的计算机,为了提高性能,我真的应该使用多个内核。但是,我很困惑为什么这些代码没有达到我的预期:
from multiprocessing import Process
var = range(5)
def test_func(i):
global var
var[i] += 1
if __name__ == '__main__':
jobs = []
for i in xrange(5):
p = Process(target=test_func,args=(i,))
jobs.append(p)
p.start()
print var
也
from multiprocessing import Pool
var = range(5)
def test_func(i):
global var
var[i] += 1
if __name__ == '__main__':
p = Pool()
for i in xrange(5):
p.apply_async(test_func,[i])
print var
我希望结果是,[1, 2, 3, 4, 5]
但结果是[0, 1, 2, 3, 4]
。
在将全局变量与进程一起使用时,我必须缺少一些微妙之处。这甚至是要走的路还是我应该避免尝试以这种方式更改变量?