使用多处理修改全局变量

时间:2016-07-08 10:36:42

标签: python global-variables multiprocessing

我想通过附加一些并行工作的函数生成的项来修改列表。像这样:

import multiprocessing
my_list=[]

def f(x):
    global my_list
    my_list.append(x)

for i in range(6):
    p = multiprocessing.Process(target=f, args=(i,))
    jobs.append(p)
    p.start()

for job in jobs:
    job.join()

我希望看到类似的内容:

In : my_list
Out: [0,1,2,3,4,5]

但是输出是一个空列表:

In : my_list
Out: []

你知道为什么会这样吗?我如何调整代码以使其修改全局变量?

1 个答案:

答案 0 :(得分:1)

我认为您需要使用多处理模块中定义的数据结构而不是标准列表:https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes