@Jinpeng estava no caminho certo com o Paralelo GNU , mas não com 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 encadeamentos paralelos, com cada um desses encadeamentos executando seu programa infinitamente:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Você pode dimensionar isso facilmente para centenas de segmentos, substituindo o 10
em meus exemplos.
parallel -j200 ... ::: {1..200}
Se o seu programa produz quaisquer mensagens stdout e você quiser vê-las à medida que elas são produzidas (ao invés do padrão que as agrupa), a opção --ungroup
para paralelo pode ser útil.
parallel --ungroup ...
Se você estiver executando muitos threads de sua estação de trabalho e não quiser que as coisas parem de responder, considere nice
ing toda a subárvore do processo no momento da inicialização.
nice -n19 parallel ...
Nota lateral, o GNU Parallel geralmente não é instalado por padrão, mas geralmente está em seus repositórios normais de pacotes, então instale-o como qualquer outro pacote: dnf install parallel
, apt-get install parallel
, brew install parallel
, etc.