在 Python 多处理中加入线程的正确方法是什么?它们有何不同?

What's the correct way to join threads in Python multiprocessing and how these differ?

在多进程中加入线程的正确方法是什么,以便主程序在继续之前等待所有线程完成?

我在研究时看到了这两种方式,不确定它们有何不同,尤其是第一种,因为第二种似乎更常见:

for i in range(100):
    j = Process(target=somefunc,args=(i,))
    j.start()

j.join()

jobs = []
for i in range(100):
    j = Process(target=somefunc,args=(i,))
    jobs.append(j)
    j.start()

for j in jobs:
    j.join()

由于服务器的限制,我使用 Python 2.6.6。

第一种方式不正确,因为它只等待最后创建的进程。它不能等待所有其他进程,因为它在开始下一个进程之前没有保留对它们的引用。

第二种方式是正确的,因为它将所有启动进程的引用收集到一个列表中,然后等待所有进程。