use*_*412 16 python global-variables multiprocessing
可能重复:
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
Run Code Online (Sandbox Code Playgroud)
以及
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
Run Code Online (Sandbox Code Playgroud)
我希望结果是,[1, 2, 3, 4, 5]
但结果是[0, 1, 2, 3, 4]
.
在使用全局变量和进程时,我必须要有一些微妙之处.这是偶然的方式还是我应该避免尝试以这种方式更改变量?
Joh*_*rth 12
如果您正在运行两个单独的进程,那么它们将不会共享相同的全局变量.如果要在进程之间传递数据,请查看使用send和recv.请查看http://docs.python.org/library/multiprocessing.html#sharing-state-between-processes,获取与您正在执行的操作类似的示例.
归档时间: |
|
查看次数: |
59266 次 |
最近记录: |