@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}
Если ваша программа генерирует какие-либо сообщения стандартного вывода и вы хотите видеть их в том виде, в котором они были созданы (а не по умолчанию, который их сопоставляет), --ungroup
может быть полезна опция параллельного подключения.
parallel --ungroup ...
Если вы выполняете много потоков с вашей рабочей станции и не хотите, чтобы что-то перестало отвечать, рассмотрите nice
все поддерево процесса во время запуска.
nice -n19 parallel ...
Примечание стороны, GNU Parallel обычно не устанавливается по умолчанию , но, как правило , в своей обычной операции РЕПО пакета, так что просто установить его , как и любой другой пакет: dnf install parallel
, apt-get install parallel
, brew install parallel
и т.д.
myprog
экземпляры и агрегирует их результаты для вас.