使用 wait() 方法检查多个 apply_async 是否全部运行完毕的示例
时间: 2024-02-21 21:00:30 浏览: 63
async和await使用简单实例
下面是一个使用 `wait()` 方法来检查多个 `apply_async` 是否全部运行完毕的示例:
```python
import multiprocessing as mp
import time
def foo(x):
print("start %d" % x)
time.sleep(1)
print("end %d" % x)
return x
if __name__ == '__main__':
with mp.Pool() as pool:
results = []
for i in range(5):
result = pool.apply_async(foo, (i,))
results.append(result)
# 等待所有异步任务完成
for result in results:
result.wait()
# 输出所有异步任务的执行结果
for result in results:
print(result.get())
```
在上面的示例中,首先创建了一个 `Pool` 对象,并使用 `apply_async` 方法提交了 5 个异步任务,将返回的 `AsyncResult` 对象存储在列表 `results` 中。接着使用循环来调用每个 `AsyncResult` 对象的 `wait()` 方法,等待所有异步任务完成。最后使用循环来调用每个 `AsyncResult` 对象的 `get()` 方法,获取执行结果。
在异步任务的函数 `foo` 中,我们使用 `time.sleep(1)` 来模拟一个耗时的操作。运行程序后,可以看到每个异步任务的开始和结束时间,以及它们的执行结果。由于使用了 `wait()` 方法等待异步任务完成,因此程序会等待所有任务执行完毕后才会输出结果。
阅读全文