首页 > 解决方案 > 将项目添加到现有多处理池映射中的列表

问题描述

我有一个现有的多处理池映射,它将执行一个 api 调用,但是每个 api 调用都会返回一个项目,该项目应该从所有每个进程中添加到一个列表中。

file_list = []
#this list will have approx million records

pool = Pool(processes=cpu_count(),initializer=init_pool, initargs=(token,url))

pool.map(find_violations, file_list)

在池中运行的功能:

def find_violations(file):

    #executes api call
    return response

我应该将此响应添加到所有每个进程的一个列表中。我知道我们应该添加 manager list ,但不确定如何更改现有代码以合并该部分。

标签: pythonpython-3.xmultiprocessing

解决方案


pool.map调用将返回响应列表:

response_list = pool.map(find_violations, file_list)

如果您只是要迭代response_list并希望在获得第一个结果后立即开始,那么您可能对pool.imap返回可迭代而不是完整列表的函数感兴趣。


推荐阅读