gpt4 book ai didi

python - 为什么 dict 没有在 python 多处理中更新?

转载 作者:行者123 更新时间:2023-11-28 22:23:00 26 4
gpt4 key购买 nike

请检查下面的代码。

我初始化了一个字典并将其发送给函数 f。我检查了 return_dict 的地址。它在过程内部没有变化。所以我认为字典应该更新

但是没有更新,这是为什么呢?

from multiprocessing import Process

return_dict = dict({})
print id(return_dict)


def f(value, return_dict):
return_dict['value'] = value
print return_dict


p = Process(target=f, args=(100, return_dict))
p.start()
p.join()
print return_dict

最佳答案

您的 Process() 创建了另一个进程。当子进程产生时,它从父进程继承对象,但是对这些对象的修改只会修改子进程内存中的对象,而这些更改对父进程都是不可见的。

您可以使用 Manager() 来解决这个问题:

from multiprocessing import Process, Manager

def f(value, return_dict):
return_dict['value'] = value
print return_dict

d = Manager().dict()
p = Process(target=f, args=(100, d))
p.start()
p.join()
print d

关于python - 为什么 dict 没有在 python 多处理中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com