从池中检索和使用部分结果



>我有三个函数,分别读取、处理和写入。每个功能都经过优化(据我所知(以独立工作。现在,我正在尝试将每个函数的每个结果传递给链中的下一个结果,而不是等待整个列表。我真的不确定如何连接它们。这是我到目前为止所拥有的。

def main(files_to_load):
    loaded_files = load(files_to_load)
    with ThreadPool(processes=cpu_count()) as pool:
        proccessed_files = pool.map_async(processing_function_with_Pool, iterable=loaded_files).get()
    write(proccessed_files)

如您所见,我的main((函数等待所有文件加载(约500Mb(将它们存储到内存中并将它们发送到processing_function_with_Pool((,后者将文件分成要处理的块。完成所有处理后,文件将开始写入磁盘。我觉得这三个步骤之间有很多不必要的等待。如何连接所有内容?

现在你的逻辑是按顺序读取所有文件(我猜(并将它们一次存储在内存中。

我建议您仅向processing_function_with_Pool发送一个包含要处理的文件名的列表。

processing_function_with_Pool将负责读取、处理文件和写回结果。

通过这种方式,您将利用并发处理 IO 的优势。

如果processing_function_with_Pool正在执行 CPU 密集型工作,我建议您切换到进程池。

相关内容

  • 没有找到相关文章

最新更新