我有三个分别读取,处理和写入的函数。每个功能都经过优化(据我所知),可以独立工作。现在,我试图将每个函数的每个结果传递给链中的下一个结果,而不是等待整个列表。我不确定如何连接它们。这是我到目前为止所拥有的。
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(),后者将文件分成要处理的块。所有处理完成后完成后,文件将开始写入磁盘。我觉得这三个步骤之间有很多不必要的等待。我如何连接所有东西?
答案 0 :(得分:0)
现在你的逻辑是按顺序读取所有文件(我猜)并将它们一次存储在内存中。
我建议您只发送一个包含要处理的文件名的列表。{/ p>
processing_function_with_Pool
将负责阅读,处理文件并将结果写回来。
通过这种方式,您可以同时处理IO。
如果processing_function_with_Pool
正在进行CPU限制工作,我建议你切换到一个进程池。