С GNU Parallel вы должны сделать следующее:
parallel script-to-run.sh input/ output/ {} ::: {0..99}
Добавьте в -P8
, если вы делаете не хотите выполнить одно задание на ядро процессора.
Противоположный xargs
он будет делать правильную вещь, даже если вход содержит пробел, 'или, (хотя здесь и не так). Он также гарантирует, что вывод с разных заданий не смешивается, поэтому, если вы используйте вывод, который вам гарантирован, что вы не получите половину строки из двух разных заданий.
GNU Parallel - это общий параллелизатор, который позволяет легко запускать задания параллельно на одном компьютере или на нескольких компьютерах, к которым у вас есть доступ к ssh.
Если у вас есть 32 различных заданий, которые вы хотите работать на 4-х процессоров, прямо вперед способ распараллеливания является выполнение 8 заданий на каждом CPU:
GNU Parallel вместо порождает новый процесс, когда один заканчивается - поддержание процессоров активным и тем самым экономя время:
Установка
Если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить личную установку, которая не требует доступа root. Это может быть сделано в течение 10 секунд, делая это:
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
Для других вариантов установки см http://git.savannah.gnu.org/cgit/parallel.git/tree/README
Подробнее
Другие примеры: http://www.gnu.org/software/parallel/man.html
смотреть интро видео: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
Прогулка по Учебник: http://www.gnu.org/software/parallel/parallel_tutorial.html
Подпишитесь на почтовую рассылку, чтобы получить поддержку: https://lists.gnu.org/mailman/listinfo/parallel
Использование GNU Parallel – Barmar
Это то, что я изначально хотел сделать, но пришлось прибегнуть к xargs, потому что я нахожусь на Windows. Я не смог заставить GNU Parallel работать в Windows – Olivier
Является ли этот сценарий само по себе или вы просто путаете имена, когда вы спрашиваете здесь? –