[英]Multicore processing of multiple files and writing to a shared output file
因此,我有30個文件,每個文件的大小為1 GB,我正在具有16 GB RAM和4個CPU內核的MAC上順序讀取它們。 他們每個人的處理都獨立於其他人。 大約需要2個小時才能完成處理。 每個文件都有一天的數據(時間序列/ 24小時)。 因此,有30天的數據。 處理后,我將輸出按日添加到文件中(即,第1天,第2天,依此類推)。
我可以使用多重處理解決此問題嗎? 它有副作用嗎? 如果有人可以指導我講解模式,那也很好。 我讀到了有關多進程,池和imap的信息,但對於如何順序(即按日)寫入文件,我仍然不清楚。
我的方法(以下任一項):
是否有更好的模式來解決此問題? 我需要在這里使用隊列嗎? 困惑!
方法二的基本演示:
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.