我如何让多个进程在 python 多进程中更新同一个字典

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()

实现这个的最佳方法是什么?

these processes don't seem to be running in parallel

您的 "starter loop" 中的 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 with worker Processes, as for your workload, using a process Pool 似乎是个好主意。