相关疑难解决方法(0)

全局变量和Python多处理

可能重复:
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].

在使用全局变量和进程时,我必须要有一些微妙之处.这是偶然的方式还是我应该避免尝试以这种方式更改变量?

python global-variables multiprocessing

16
推荐指数
1
解决办法
6万
查看次数

标签 统计

global-variables ×1

multiprocessing ×1

python ×1