@ Jinpeng war mit GNU Parallel auf dem richtigen Weg , nur nicht die Implementierung.
Beispiel: Führen Sie 10 parallele Instanzen Ihres Programms aus, wobei jeder Thread Ihr Programm nur einmal ausführt:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Beispiel: Führen Sie 10 parallele Threads aus, wobei jeder dieser Threads Ihr Programm unendlich ausführt:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Sie können dies leicht auf die Hunderte von Threads skalieren, indem Sie das 10
in meinen Beispielen ersetzen .
parallel -j200 ... ::: {1..200}
Wenn Ihr Programm Standardnachrichten ausgibt und Sie diese so anzeigen möchten, wie sie erstellt wurden (und nicht die Standardnachricht, in der sie sortiert werden), kann die --ungroup
Option parallel nützlich sein.
parallel --ungroup ...
Wenn Sie viele Threads von Ihrer Workstation ausführen und nicht möchten, dass die Dinge nicht mehr reagieren, sollten nice
Sie den gesamten Teilbaum des Prozesses zum Startzeitpunkt berücksichtigen .
nice -n19 parallel ...
Randnotiz, GNU Parallel ist in der Regel standardmäßig nicht installiert , sondern ist in der Regel in Ihrem normalen Paket repos, so installieren Sie es wie jedes andere Paket: dnf install parallel
, apt-get install parallel
, brew install parallel
etc.
myprog
Instanzen erzeugt und deren Ausgabe für Sie aggregiert.