O @Jinpeng estava no caminho certo com o GNU Parallel , mas não a implementação.
Exemplo: Execute 10 instâncias paralelas do seu programa, com cada thread executando seu programa apenas uma vez:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Exemplo: Execute 10 threads paralelos, com cada um desses threads executando seu programa infinitamente:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Você pode escalar isso facilmente para centenas de threads, substituindo o dos 10
meus exemplos.
parallel -j200 ... ::: {1..200}
Se o seu programa produz mensagens stdout e você deseja vê-las como são produzidas (em vez do padrão que as agrupa), a --ungroup
opção paralela pode ser útil.
parallel --ungroup ...
Se você estiver executando muitos encadeamentos da estação de trabalho e não desejar que as coisas deixem de responder, considere nice
a subárvore inteira do processo no momento da inicialização.
nice -n19 parallel ...
Nota lateral, GNU Parallel normalmente não é instalado por padrão, mas é geralmente em seus repositórios de pacotes normais, então basta instalá-lo como qualquer outro pacote: dnf install parallel
, apt-get install parallel
, brew install parallel
, etc.
myprog
instâncias filho e agrega sua saída para você.