python 的pool.apply_async(process_handler, (data_list, ))获取各个进程的返回值代码示例
时间: 2024-05-03 15:20:29 浏览: 31
以下是一个使用 `multiprocessing.Pool` 进行并行计算的示例代码,其中使用了 `apply_async` 来异步执行进程,获取各个进程的返回值:
```python
import multiprocessing
def process_handler(data):
# 处理数据并返回结果
result = data * 2
return result
if __name__ == '__main__':
# 待处理的数据列表
data_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 创建进程池,同时最多运行 4 个进程
pool = multiprocessing.Pool(processes=4)
# 异步执行进程,获取各个进程的返回值
results = []
for data in data_list:
result = pool.apply_async(process_handler, (data,))
results.append(result)
# 关闭进程池,并等待所有进程结束
pool.close()
pool.join()
# 输出各个进程的返回值
for result in results:
print(result.get())
```
在上面的示例代码中,我们首先定义了一个用于处理数据的函数 `process_handler`,它接受一个数据,并将数据乘以 2 后返回结果。然后,我们创建了一个包含 10 个数据的列表 `data_list`,并使用 `multiprocessing.Pool` 创建了一个最多可以运行 4 个进程的进程池。接着,我们使用 `apply_async` 方法异步执行进程,并将返回值添加到一个列表 `results` 中,最后我们关闭进程池,并使用 `get` 方法依次输出各个进程的返回值。
阅读全文