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

File io 从池中检索和使用部分结果,file-io,multiprocessing,File Io,Multiprocessing,我有三个函数,分别是读取、处理和写入。每个功能都经过优化(据我所知)以独立工作。现在,我试图在每个函数的每个结果可用时将其传递给链中的下一个函数,而不是等待整个列表。我真的不确定如何连接它们。这是我到目前为止所拥有的 def main(files_to_load): loaded_files = load(files_to_load) with ThreadPool(processes=cpu_count()) as pool: proccessed_files

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

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)

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

现在,您的逻辑是按顺序读取所有文件(我猜),然后立即将它们存储在内存中

我建议您向
processing\u function\u和\u Pool
发送一个包含要处理的文件名的列表

带有\u池的
处理\u函数\u将负责读取、处理文件并将结果写回

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

如果带有_Pool
处理_函数_正在执行CPU限制的工作,我建议您切换到进程池