首页 > 解决方案 > 我如何等待任何结束而不是特定线程的线程?

问题描述

我的脚本已经启动了许多线程。它一直在计数。现在正在运行的最大线程数。还有更多要运行。脚本如何等待任何一个正在运行的线程结束,以便它可以安全地启动另一个?它threading.Thread()用于创建每个线程,但如果有更好的模块可以更改。我正在使用 Python 3.6.x。

标签: pythonpython-3.xmultithreading

解决方案


要创建进程池并将任务传递给它们:

def processing_task(arg1, arg2):
    ...

from multiprocessing import Pool

with Pool() as worker_pool:  # By default creates processes == number of CPUs
    while True:
        task = some_queue_implementation.get()  # Some blocking method that receives tasks
        worker_pool.apply_async(processing_task, task.arg1, task.arg2)

这将创建子进程,这些子进程将处于空闲状态,直到它们被传递一个任务


推荐阅读