可能是重复问题:
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]
。
在使用进程的全局变量方面,我可能忽略了一些微妙之处。这是否是正确的方式,还是应该避免以这种方式更改变量?