multiprocessing apply_async 创建新协程
时间: 2024-09-13 18:08:52 浏览: 40
`multiprocessing`模块是Python中用于创建进程的库,它提供了与`threading`模块类似的API,但它是用于实现进程级并行而不是线程级并行。`apply_async`方法是非阻塞地异步执行一个函数,它属于`multiprocessing.Pool`类。使用`apply_async`可以并行地在不同的进程中执行任务,而不必等待每个任务完成即可继续执行后续代码。
创建新进程(或称为协程,虽然在Python中通常称为进程)的一个简单例子如下:
```python
import multiprocessing
def my_task(x):
"""定义一个任务函数"""
return x * x
if __name__ == '__main__':
# 创建一个进程池
pool = multiprocessing.Pool(processes=4)
# 异步地应用任务到进程池
result = pool.apply_async(my_task, (10,)) # 这里传递了一个参数10给函数my_task
# 可以在result上使用get方法等待结果,或使用result.ready()检查是否完成
print(result.get()) # 打印结果
# 关闭进程池,不再接受新的任务
pool.close()
# 等待所有子进程完成,释放资源
pool.join()
```
需要注意的是,由于`apply_async`是非阻塞的,你可以继续在主进程中执行其他代码,而异步任务则在后台的进程中执行。`apply_async`方法返回一个`AsyncResult`对象,你可以通过它的`get`方法来获取结果,或者使用其他方法来检查任务是否完成或者取消任务。
阅读全文