我正在尝试使用多处理来填充字典,然后我将运行一些数据分析。但是,我无法弄清楚我的进程如何/为什么不会为全局列表对象添加值。这是我的测试代码
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()
答案 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[:])