複数のコアでファイルのバッチ処理を行いたい。次のシナリオがあります。
- 私は20個のファイルを持っています。
- ファイル名を取得して処理し、整数の結果を生成する関数があります。関数を 20 個のファイルすべてに適用し、それぞれの整数出力を計算し、最後に個々の出力を合計して合計結果を出力したいと考えています。
- コアが 4 つあるため、一度に 4 つのファイルしか処理できません。したがって、一度に 4 つのファイルを処理する 5 ラウンドを実行したいと考えています (4*5 = 20)。
- つまり、それぞれが 5 つのファイルを次々に処理する 4 つのプロセスを作成します (1 番目のプロセスはファイル 0、4、8、12、16 を処理し、2 番目のプロセスはファイル 1、5、9、13、17 などを処理します)。
どうすればこれを達成できますか? multiprocessing.Pool()
、multiprocessing.Process()
およびその他のさまざまなオプションに混乱しています。
ありがとう。