【问题标题】:What's the correct way to join threads in Python multiprocessing and how these differ?在 Python 多处理中加入线程的正确方法是什么,它们有何不同?
【发布时间】:2021-09-18 01:38:07
【问题描述】:

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

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

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。

【问题讨论】:

    标签: python python-2.6


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      相关资源
      最近更新 更多