@Jinpeng був на правильному шляху з GNU Parallel , тільки не реалізацією.
Приклад: запустіть 10 паралельних примірників вашої програми, при цьому кожен потік запускає вашу програму лише один раз:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Приклад: запустіть 10 паралельних ниток, причому кожен з цих потоків нескінченно виконує вашу програму:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Ви можете легко масштабувати це до сотень потоків, замінивши 10
в моїх прикладах.
parallel -j200 ... ::: {1..200}
Якщо ваша програма створює будь-які повідомлення stdout, і ви хочете бачити їх такими, які вони виробляються (а не за замовчуванням, що їх згортає), --ungroup
може бути корисним паралельний параметр.
parallel --ungroup ...
Якщо ви працюєте з великою кількістю потоків зі своєї робочої станції і не хочете, щоб речі не відповідали, розгляньте nice
піддерево всього процесу під час запуску.
nice -n19 parallel ...
Примітка боку, GNU Parallel зазвичай не встановлюється за умовчанням , але, як правило , в своїй звичайній операції РЕПО пакета, так що просто встановити його , як і будь-який інший пакет: dnf install parallel
, apt-get install parallel
, brew install parallel
і т.д.
myprog
екземпляри та агрегує їх результати для вас.