程序需要多进程见共享内存,使用了Manager的dict。最初代码如下:
from multiprocessing import Process, Manager
d = Manager().dict()
d2 = {}
def f():
d['a1'] = {}
d['a1']['a2'] = 11
print d['a1']['a2']
if __name__ == '__main__':
p = Process(target=f)
p.start()
p.join()
结果报错:
print d['a1']['a2']
KeyError: 'a2'
解决方案:
from multiprocessing import Process, Manager
d = Manager().dict()
d2 = {}
def f():
d['a1'] = {}
d2['a2'] = 11
d['a1'] = d2
print d['a1']['a2']
if __name__ == '__main__':
p = Process(target=f)
p.start()
p.join()
本文解决了一个关于Python多进程中使用Manager的dict进行数据共享的问题。初始代码尝试直接在子进程中修改共享字典的嵌套字典导致KeyError异常。通过创建一个独立的字典并在子进程中将其内容赋值给共享字典解决了此问题。

2377

被折叠的 条评论
为什么被折叠?



