@Jinpeng était sur la bonne voie avec GNU Parallel , mais pas la mise en œuvre.
Exemple: exécutez 10 instances parallèles de votre programme, chaque thread exécutant votre programme une seule fois:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Exemple: exécutez 10 threads parallèles, chacun de ces threads exécutant votre programme indéfiniment:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Vous pouvez facilement mettre cela à l'échelle des centaines de threads en remplaçant le 10
dans mes exemples.
parallel -j200 ... ::: {1..200}
Si votre programme produit des messages stdout et que vous souhaitez les voir au fur et à mesure de leur production (plutôt que le message par défaut qui les assemble), l' --ungroup
option de mise en parallèle peut être utile.
parallel --ungroup ...
Si vous exécutez beaucoup de threads à partir de votre poste de travail et que vous ne voulez pas que les choses ne répondent plus, prenez en compte nice
l'ensemble de la sous-arborescence de processus au moment du lancement.
nice -n19 parallel ...
Note latérale, parallèle GNU est généralement pas installé par défaut mais est habituellement dans vos prises en pension de paquet normal, donc il suffit d' installer comme tout autre paquet: dnf install parallel
, apt-get install parallel
, brew install parallel
, etc.
myprog
instances enfants et agrège leur sortie pour vous.