バッチ別コマンドの並列処理

バッチ別コマンドの並列処理

したがって、処理するCPUコアは10個、データは20個です。データを並列に処理したいのですが、一度に20個だけ処理すると問題が生じるかと心配です。だから10個のデータを2回処理したいと思います。これを行うコマンドはありますか?

情報を追加:

データはファイル形式です。ファイルあたり最大10GBまでかなり大きな容量です。私の経験では、10以上のプロセスを開始すると、PCが非常に遅くなったり、ラックが発生したりします。そのため、プロセスをコア数と同じ10個に制限しました。私のRAMの場合、ファイルを処理するソフトウェアがすべてを一度にロードしないため、RAMの使用量が非常に低いと思います。そのため、データ10個ごとに並列化すればよいのです。これで、並列に実行される10個のシェルスクリプトを作成しました。各シェルスクリプトには順次コマンドが含まれています。

ベストアンサー1

GNU並列処理を使用する:

parallel my_process {} ::: files*

これはmy_process fileCPU スレッドごとに 1 つずつ実行されます。

次のタスクを開始する前に、使用可能なRAMが10Gであることを確認するようにGNU Parallelに指示できます。

parallel --memfree 10G my_process {} ::: files*

利用可能なメモリが5G未満に低下すると、GNU Parallelは最新のタスクを終了し、10Gのメモリが再利用可能になると再起動します。

おすすめ記事