天天看點

python Manager 之dict KeyError問題

程式需要多程序見共享記憶體,使用了Manager的dict。最初代碼如下:

from multiprocessing import Process, Manager
d = Manager().dict()
d2 = {}

def f():
    d['a1'] = {}
 <span style="color:#ff6666;">   d['a1']['a2'] = 11</span>
    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'] = {}
<span style="color:#ff6666;">    d2['a2'] = 11
    d['a1'] = d2</span>
    print d['a1']['a2']

if __name__ == '__main__':
    p = Process(target=f)
    p.start()
    p.join()