python 的pool.apply_async(process_handler, (data_list, ))获取各个进程的返回值代码示例
时间: 2023-06-09 12:04:45 浏览: 636
Python库 | nickmab.async_util-0.2.tar.gz
当使用Python的multiprocessing库中的Pool类来实现多进程并行处理时,可以利用apply_async()方法来提交进程任务。该方法的语法如下所示:
```
pool.apply_async(func, args=(), callback=None)
```
其中,第一个参数func表示要执行的进程任务函数,args参数则用于指定函数的参数,callback则用于指定回调函数。
下面是一个示例,展示了如何使用pool.apply_async()获取多进程任务的返回值:
```python
from multiprocessing import Pool
def process_handler(data):
# 处理数据的任务函数
result = "Processed: " + str(data)
return result
if __name__ == '__main__':
data_list = [1, 2, 3, 4, 5]
pool = Pool(processes=2)
results = []
for data in data_list:
async_result = pool.apply_async(process_handler, (data,))
results.append(async_result)
pool.close()
pool.join()
for result in results:
print(result.get())
```
在上述例子中,我们首先定义了一个用于处理数据的函数process_handler(),然后创建了一个数据列表data_list,其中包含了5个需要进行处理的数据。接着,我们创建了一个包含两个进程的进程池对象pool,并在循环中调用apply_async()方法向进程池中提交了5个进程任务。每个任务都需要调用process_handler()函数,并传入一个data参数。执行时,apply_async()返回的是一个AsyncResult对象,我们可以将其添加到结果列表results中。接下来,我们关闭进程池,等待所有进程任务执行结束,最后使用get()方法获取每个任务的返回值,并将其打印出来。
阅读全文