Python中让主线程等待所有子线程结束代码

在Python中,要让主线程等待所有子线程结束,可以遵循以下步骤:

‌创建并启动所有子线程‌:

使用threading.Thread类创建线程对象,并调用其start()方法来启动线程。将所有线程对象存储在一个列表中,以便后续使用。

‌在主线程中使用Thread.join()方法等待每个子线程结束‌:

遍历存储线程对象的列表,并对每个线程调用join()方法。join()方法会阻塞调用它的线程(在这个场景中是主线程),直到被调用的线程(即子线程)结束。

‌确认所有子线程都已成功结束‌:

当所有子线程的join()方法都被调用后,主线程会继续执行后续的代码。此时,可以确认所有子线程都已经成功结束。

以下是一个示例代码,展示了如何实现这一过程:

import threading
import time

# 定义线程要执行的任务
def task(thread_name, delay):
    print(f"线程 {thread_name} 开始执行, 延迟 {delay} 秒")
    time.sleep(delay)
    print(f"线程 {thread_name} 结束执行")

# 创建线程列表
threads = []

# 创建并启动多个线程
for i in range(5):
    thread_name = f"线程-{i+1}"
    delay = i + 1
    thread = threading.Thread(target=task, args=(thread_name, delay))
    thread.start()
    threads.append(thread)

# 等待所有线程结束
for thread in threads:
    thread.join()

print("所有线程已结束")


在这个示例中:

我们定义了一个简单的任务task,它接受线程名称和延迟时间作为参数,并在延迟指定的秒数后结束。

我们创建了一个空列表threads来存储线程对象。

我们使用for循环创建了5个线程,并将它们添加到threads列表中。

最后,我们遍历threads列表,并对每个线程调用join()方法,这样主线程就会等待所有子线程结束后再继续执行。

当所有线程都执行完毕后,主线程会打印出"所有线程已结束"。