繁体   English   中英

多处理,全局变量未更新

[英]Multprocessing, global variable not being updated

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

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()

将共享内存用于“全局”变量。 官方文档中的示例

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[:])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM