@Jinpeng era sulla buona strada con GNU Parallel , ma non l'implementazione.
Esempio: esegui 10 istanze parallele del tuo programma, con ogni thread che esegue il programma una sola volta:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Esempio: esegui 10 thread paralleli, con ognuno di quei thread che eseguono il tuo programma all'infinito:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Puoi facilmente ridimensionarlo a centinaia di thread sostituendo il 10
nei miei esempi.
parallel -j200 ... ::: {1..200}
Se il tuo programma produce messaggi stdout e vuoi vederli man mano che vengono prodotti (piuttosto che il valore predefinito che li raccoglie), l' --ungroup
opzione in parallelo può essere utile.
parallel --ungroup ...
Se stai eseguendo molti thread dalla tua workstation e non vuoi che le cose non rispondano, considera nice
l'intera sottostruttura del processo al momento del lancio.
nice -n19 parallel ...
Nota a margine, GNU parallela di solito non è installato per impostazione predefinita, ma è di solito nelle vostre normali pronti contro termine del pacchetto, quindi basta installarlo come qualsiasi altro pacchetto: dnf install parallel
, apt-get install parallel
, brew install parallel
, etc.
myprog
istanze figlio e aggrega l'output per te.