【发布时间】:2020-01-15 13:01:14
【问题描述】:
我尝试像这样更新Manager().dict
from multiprocessing import Process, Manager
def f(d):
print(d)
d['a'][1] = 'something new'
print(d)
if __name__ == '__main__':
manager = Manager()
d = manager.dict()
d['a'] = {1: 3}
print(d)
p1 = Process(target=f, args=(d,))
p1.start()
p1.join()
print(d)
但是,它会打印出来
{'a': {1: 3}}
{'a': {1: 3}}
{'a': {1: 3}}
{'a': {1: 3}}
我尝试d['a'] = Manager().dict({1: 3}),它可以打印预期的输出,但是当字典非常复杂时,这种解决方法非常低效。
我怎样才能像普通的dict 一样轻松更新Manager().dict?
【问题讨论】:
-
似乎是 python bugs.python.org/issue6766 中的一个错误,您无法修改嵌套字典
d['a'] = {1: 'something new'}虽然在f(d)中有效 -
@DeveshKumarSingh 是的,这是一个讨厌的错误。
标签: python multiprocessing python-multiprocessing