Если вы хотите воспользоваться всеми своими прекрасными ядрами ЦП, за которые вы так щедро заплатили Intel, перейдите на GNU Parallel :
seq -f "%05g" 5000 | parallel -k echo command {}.inp {}.out
Если вам нравится внешний вид этого, запустите его снова без -k
(который сохраняет вывод в порядке) и без echo
.Вам может потребоваться заключить команду в одинарные кавычки:
seq -f "%05g" 5000 | parallel '/command {}.inp {}.out'
Она будет запускать 1 экземпляр для каждого ядра ЦП параллельно, но, если вы хотите сказать 32 параллельно, используйте:
seq ... | parallel -j 32 ...
Если вы хотите "расчетное время прибытия" , используйте:
parallel --eta ...
Если вам нужен индикатор прогресса, используйте:
parallel --progress ...
Если у вас есть bash
версия 4+, он может расширять фигурные скобки.И если ваш ARGMAX
достаточно велик, вы можете использовать более просто:
parallel 'echo command {}.inp {}.out' ::: {00001..05000}
Вы можете проверить свой ARGMAX
с помощью:
sysctl -a kern.argmax
и он подскажет, скольков байтах ваш список параметров может быть.Вам понадобится 5000 номеров по 5 цифр плюс пробел каждое, поэтому минимум 30 000.
Если вы используете macOS , вы можете установить GNU Parallel с домашним пивом :
brew install parallel