Possible Duplicate:
Python multiprocessing global variable updates not returned to parent
我用的是一台多核的电脑,为了提高性能,我真的应该用不止一个。但是,我很困惑为什么这些代码没有达到我的预期:
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]
。
在进程中使用全局变量时,我一定缺少一些微妙之处。这样做是可行的,还是应该避免以这种方式更改变量?
如果您运行两个单独的进程,则它们不会共享相同的全局。如果要在进程之间传递数据,请使用send和recv。看一下http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes这个例子和你正在做的事情类似。
相关问题 更多 >
编程相关推荐