簡體   English   中英

多核處理多個文件並寫入共享的輸出文件

[英]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的信息,但對於如何順序(即按日)寫入文件,我仍然不清楚。

我的方法(以下任一項):

  1. 我正在使用imap獲取有序的輸出。 要么
  2. 為每個輸入文件編寫單獨的輸出文件,然后通過排序將它們合並為一個。

是否有更好的模式來解決此問題? 我需要在這里使用隊列嗎? 困惑!

方法二的基本演示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM