С GNU Parallel это так же просто, как:
parallel -j4 ::: run_func_{1..8}
Просто запомните export -f
функции.
Если GNU Parallel не установлен, используйте
parallel --embed > new_script
для генерации сценария оболочки, который встраивает GNU Parallel. Вы тогда просто измените конец new_script
.
По умолчанию он запускает одно задание на ядро процессора. Это можно настроить с помощью --jobs
.
GNU Parallel - это общий параллелизатор, позволяющий легко запускать задания параллельно на одной и той же машине или на нескольких машинах, к которым у вас есть доступ по ssh.
Если у вас есть 32 различных задания, которые вы хотите запустить на 4 процессорах, прямой способ распараллеливания - запустить 8 заданий на каждом процессоре:
GNU Parallel вместо этого порождает новый процесс после его завершения - поддерживая активные процессоры и, таким образом, экономя время:
Установка
В целях безопасности вам следует установить GNU Parallel с менеджером пакетов, но если GNU Parallel не упакован для вашего дистрибутива, вы можете выполнить личную установку, которая не требует root-доступа. Это можно сделать за 10 секунд, выполнив следующее:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 3374ec53bacb199b245af2dda86df6c9
12345678 3374ec53 bacb199b 245af2dd a86df6c9
$ md5sum install.sh | grep 029a9ac06e8b5bc6052eac57b2c3c9ca
029a9ac0 6e8b5bc6 052eac57 b2c3c9ca
$ sha512sum install.sh | grep f517006d9897747bed8a4694b1acba1b
40f53af6 9e20dae5 713ba06c f517006d 9897747b ed8a4694 b1acba1b 1464beb4
60055629 3f2356f3 3e9c4e3c 76e3f3af a9db4b32 bd33322b 975696fc e6b23cfb
$ bash install.sh
Другие варианты установки см. 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