在 Python 中,可以使用线程池(ThreadPoolExecutor)和 wait 方法来等待线程池中的所有任务完成。

发布时间 2023-09-21 09:24:24作者: 徐俊112
import concurrent.futures

# 创建一个线程池
with concurrent.futures.ThreadPoolExecutor() as executor:
    # 提交任务给线程池
    task1 = executor.submit(func1, arg1)
    task2 = executor.submit(func2, arg2)
    task3 = executor.submit(func3, arg3)

    # 使用 wait 方法等待所有任务完成
    concurrent.futures.wait([task1, task2, task3])

    # 所有任务完成后,继续执行其他操作
    # ...

在这个示例中,首先使用 concurrent.futures.ThreadPoolExecutor() 创建了一个线程池。然后,使用 executor.submit() 方法将需要执行的函数和参数提交给线程池,返回一个任务对象(Future)。每个任务对象分别保存在 task1task2task3 变量中。

接下来,使用 concurrent.futures.wait() 方法等待所有任务完成。wait() 方法接受一个任务对象列表作为参数,并阻塞当前线程,直到所有任务都完成。你也可以传入超时参数来设置等待的最大时间。

当所有任务完成后,代码会继续执行后面的操作。

注意,以上示例只是一种基本的用法,实际情况可能会根据具体需求进行调整。确保要导入 concurrent.futures 模块以使用线程池和相关方法。同时,也要在任务函数中处理异常以避免潜在的错误。