多处理,全局变量未更新

时间:2018-02-27 17:20:25

标签: python multiprocessing

我正在尝试使用多处理来填充字典,然后我将运行一些数据分析。但是,我无法弄清楚我的进程如何/为什么不会为全局列表对象添加值。这是我的测试代码

this_list = {}


def run_this(x, y):
    global this_list
    this_list[x] = y


def main():
    global this_list
    p1 = mp.Process(target=run_this, args=(0, 3))
    p2 = mp.Process(target=run_this, args=(1, 4))
    p3 = mp.Process(target=run_this, args=(2, 5))

    p1.start()
    p2.start()
    p3.start()
    p1.join()
    p2.join()
    p3.join()
    print(this_list)


if __name__ == "__main__":
    main()

1 个答案:

答案 0 :(得分:0)

将共享内存用于“全局”变量。来自official documentation

的示例
from multiprocessing import Process, Value, Array

def f(n, a):
    n.value = 3.1415927
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    num = Value('d', 0.0)
    arr = Array('i', range(10))

    p = Process(target=f, args=(num, arr))
    p.start()
    p.join()

    print(num.value)
    print(arr[:])