Python等待多个子线程

在Python中,线程是一种非常方便的多任务处理方式。使用线程可以让程序同时执行多个任务,从而提高程序的运行效率。但是,在实际开发中,我们有时候需要等待多个子线程全部完成后再继续执行主线程。本文将介绍如何在Python中等待多个子线程的完成。

创建多个子线程

首先,我们需要创建多个子线程来并发执行任务。下面是一个简单的示例,创建了三个子线程,每个子线程都会休眠一段时间然后打印出自己的标识。

import threading
import time

def task(thread_id):
    print(f"Thread {thread_id} started")
    time.sleep(2)
    print(f"Thread {thread_id} finished")

threads = []
for i in range(3):
    t = threading.Thread(target=task, args=(i,))
    threads.append(t)
    t.start()

上面的代码中,我们定义了一个task函数,用来模拟子线程执行的任务。然后创建了三个子线程,并启动它们。

等待多个子线程完成

接下来,我们需要等待所有的子线程执行完成。可以使用join方法来等待一个线程完成,但如果需要等待多个线程,可以使用Thread.join方法结合循环来实现。

for t in threads:
    t.join()
print("All threads finished")

在上面的代码中,我们遍历所有的子线程,使用join方法等待每个子线程完成。当所有子线程都完成后,打印出All threads finished

完整代码示例

下面是完整的代码示例,包括创建多个子线程和等待子线程完成的部分:

import threading
import time

def task(thread_id):
    print(f"Thread {thread_id} started")
    time.sleep(2)
    print(f"Thread {thread_id} finished")

threads = []
for i in range(3):
    t = threading.Thread(target=task, args=(i,))
    threads.append(t)
    t.start()

for t in threads:
    t.join()
print("All threads finished")

饼状图示例

下面使用mermaid语法绘制一个简单的饼状图,展示三个子线程的执行情况:

pie
    title Threads Execution
    "Thread 0": 33.33
    "Thread 1": 33.33
    "Thread 2": 33.33

关系图示例

最后,使用mermaid语法绘制一个关系图,展示主线程与子线程之间的关系:

erDiagram
    MAIN_THREAD ||--o| THREAD_0 : launches
    MAIN_THREAD ||--o| THREAD_1 : launches
    MAIN_THREAD ||--o| THREAD_2 : launches

通过以上的代码示例和图表展示,我们学习了如何在Python中创建多个子线程并等待它们全部完成。这种方式可以提高程序的并发性能,让程序更高效地执行多任务。

希望本文对您有所帮助,谢谢阅读!