-2
這是主要的代碼:值不存儲到管理器()的池(內部字典())
if __name__ == '__main__':
manager = Manager()
mylist = manager.list()
mydict = manager.dict()
mylist.append('abc')
mylist.append('xyz')
for k in mylist:
mydict[k] = manager.list()
pool = Pool(processes = 100)
pool.map(func, arg)
pool.terminate()
這是FUNC()定義:
for x in mylist:
r = {}
r['m'] = 1
r['n'] = 2
print (r) # gives correct values
mydict[x].append(dict(r))
print (mydict) # gives empty list, keys are printed correct
作爲評價在代碼中,它將打印空列表而不是期望的值。 如何讓這個共享字典和列表正常工作?
第一次打印顯示期望值。第二個打印顯示預期的鍵,但值部分是空列表。由於它正確顯示了鍵,共享正在工作。附加部分存在一些問題。我無法弄清楚。
打倒選民,請在您認爲我的問題與該問題相同之前仔細閱讀鏈接的問題。如果你仍然堅持他們是一樣的,請留下評論,說明你爲什麼這麼想。從我的觀點來看,這兩個問題都不一樣。鏈接的問題詢問如何與建議使用Manager.dict()的答案共享一個字典。我的問題已經使用了Manager.dict(),並且由於異常而失敗。謝謝。
您是否想在所有管理器實例中共享「mylist」? –
[編輯]你的問題,並顯示'func(???',或者你使用'mylist'作爲全局函數頭? – stovfl
@pdshah應該只有一個mydict實例和一個mylist實例整個程序都是全局的,所有mydict中的數據必須是可見的,並且可以從myfunc()中修改我不明白「所有管理器實例」是什麼意思我是在池中創建更多的實例嗎?我修復它 – aste123