@JinpengはGNU Parallelで正しい軌道に乗っていましたが、実装ではありませんでした。
例:プログラムの10個の並列インスタンスを実行し、各スレッドはプログラムを1回だけ実行します。
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
例:10個の並列スレッドを実行します。これらの各スレッドはプログラムを無限に実行します。
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
10
私の例のを置き換えることで、これを数百のスレッドに簡単に拡張できます。
parallel -j200 ... ::: {1..200}
プログラムがstdoutメッセージを生成し、それらを(それらを照合するデフォルトではなく)生成されたとおりに表示したい--ungroup
場合は、parallelオプションが便利です。
parallel --ungroup ...
ワークステーションから多くのスレッドを実行しており、応答しないようにしたくない場合はnice
、起動時にプロセスサブツリー全体を実行することを検討してください。
nice -n19 parallel ...
サイドノート、GNUパラレルは通常、デフォルトではインストールされていませんが、これだけ他のパッケージのようにそれをインストールし、通常のパッケージリポジトリに通常:dnf install parallel
、apt-get install parallel
、brew install parallel
、など
myprog
インスタンスを生成して出力を集約するプログラムを1つ用意する方がよいでしょう。