簡體   English   中英

我如何獲得多個進程來更新python multiprocess中的同一詞典

[英]How do i get multiple processess to update the same dictionary in python multiprocess

我有一個瓶頸是API調用的程序,所以我想同時進行API調用。 用偽代碼,這就是我想要的:

from multiprocessing import Process, Manager

urls = ['www.example.com/item/1', 'www.example.com/item/2', 'www.example.com/item/3']

def get_stats(url, d):
    data = http.get(url)
    d[data['name']] = data['data']

manager = Manager()

d = manager.dict()

for url in urls:
    p = Process(target=get_stats, args=(url, d))
    p.start()
    p.join()

print d

唯一的是,這些進程似乎不是並行運行的。

是因為我在開始處理后放置了join()嗎?

實現此目的的最佳方法是什么?

這些進程似乎不是並行運行的

“啟動程序循環”中的join()等待每個進程終止,然后再啟動下一個進程。

嘗試這樣的事情,而不是:

procs = []
for url in urls:
    p = Process(target=get_stats, args=(url, d))
    p.start()
    procs.append(p)

for p in procs:
    p.join()

對於您的工作量,您可能還想看看使用工作進程池的答案,使用進程Pool似乎是個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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