[英]python multiprocessing nested dictionay
我嘗試使用python(3.4.2)中的多處理工具來提高性能。 我的常規程序運行正常,但是我必須在其中處理大型嵌套字典。 隨附了簡化版,顯示了我的問題。 如果我直接使用TestProc,則可以正常工作,而不能進行多重處理。
謝謝你的幫助!
import multiprocessing
def TestProc(liste, results):
for i in liste:
results[i] = {'power':{'square': float(i)**2, 'cubic':
float(i)**3},'root':{'square': float(i)**(1/2), 'cubic': float(i)**(1/3)}}
if __name__ == "__main__":
multiprocessing.freeze_support()
results = multiprocessing.Manager().dict()
results = {}
liste = ['1','2','3','4','5']
for i in liste:
results[i] = multiprocessing.Manager().dict()
print(results)
#TestProc(liste, results)
p1 = multiprocessing.Process(target=TestProc, args=(liste,results,))
p1.start()
p1.join()
print(results)
當您這樣做時:
results[i] = ...
您沒有在results[i]
上向DictProxy
添加值, DictProxy
在外部results
dict
中用另一個全新的dict
替換了它。 因此,您唯一需要同步的就是外部dict
。
用results = multiprocessing.Manager().dict()
替換第15行,並刪除從未執行任何操作的循環行18-20。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.