簡體   English   中英

Python多處理嵌套字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM