检查多个 apply_async 方法是否全部运行完毕的示例
时间: 2023-12-04 13:04:44 浏览: 187
判断Threading.start新线程是否执行完毕的实例
可以使用`AsyncResult`对象的`ready()`方法来检查多个`apply_async`方法是否全部运行完毕,示例如下:
```python
from multiprocessing.pool import ThreadPool
import time
def worker(num):
print("Worker %d started" % num)
time.sleep(2)
print("Worker %d finished" % num)
# 创建线程池
pool = ThreadPool(processes=3)
# 添加任务到线程池
results = []
for i in range(3):
result = pool.apply_async(worker, args=(i,))
results.append(result)
# 检查任务是否全部完成
while not all(result.ready() for result in results):
print("Waiting for all tasks to finish...")
time.sleep(1)
print("All tasks finished")
```
此示例创建了一个拥有3个线程的线程池,并将三个任务添加到线程池中。然后,使用`AsyncResult`对象的`ready()`方法检查每个任务是否已经完成。如果所有任务都完成了,则退出循环并打印"All tasks finished"。如果还有任务未完成,则继续等待。
阅读全文