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()方法,这样主线程就会等待所有子线程结束后再继续执行。
当所有线程都执行完毕后,主线程会打印出"所有线程已结束"。