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