所以,我有大约30个文件,每个1 GB的大小,我在具有16 GB RAM和4个CPU核心的MAC上顺序读取它们。它们中的每一个的处理独立于其他处理。完成处理需要将近2个小时。每个文件都有一天的数据(时间序列/ 24小时)。所以有30天的数据。处理完毕后,我将输出文件附加到文件中(即第1天,第2天,依此类推)。
我可以使用多处理解决此问题吗?它有任何副作用(如捶打等)吗?如果有人可以指导我的模式,那也很棒。我读过有关Multiprocess,Pools和imap的内容,但我仍然不清楚如何顺序写入文件(即日常)。
我的方法(以下任何一种):
有没有更好的模式来解决这个问题?我需要在这里使用队列吗?困惑!
答案 0 :(得分:0)
方法二的基本演示:
from concurrent.futures import ProcessPoolExecutor
executor = ProcessPoolExecutor(max_workers=10)
inputs = ['a.input.txt', ]
outputs = ['a.output.txt', ]
def process(input, output):
""" process one file at a time."""
pass
def merge(files):
""" merge all output files. """
pass
for i in range(len(inputs)):
executor.submit(process, inputs[i], outputs[i])
merge(outputs)