2015-06-10 2 views
1

Я обнаружил, что моя рабочая станция Linux с 12 процессорами почти перестала работать после того, как я выполнил сценарий оболочки (tcsh), имеющий цикл for, где более сотни циклов выполняемый одновременно, добавив в конце команды «&». Есть ли способ контролировать число или время выполнения фоновых процессов в for-loop с помощью tcsh?Как управлять многопоточными фоновыми заданиями в цикле в сценарии оболочки

ответ

0

GNU Parallel предназначен для таких ситуаций.

GNU Parallel - это общий параллелизатор, который позволяет легко запускать задания параллельно на одном компьютере или на нескольких компьютерах, к которым у вас есть доступ к ssh.

Если у вас есть 32 различных заданий, которые вы хотите работать на 4-х процессоров, прямо вперед способ распараллеливания является выполнение 8 заданий на каждом CPU:

Simple scheduling

GNU Parallel вместо порождает новый процесс, когда один заканчивается - поддержание процессоров активным и тем самым экономя время:

GNU Parallel scheduling

Установка

Если 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

Прогулка по t он учебник: http://www.gnu.org/software/parallel/parallel_tutorial.html

Зарегистрируйтесь на список адресов электронной почты, чтобы получить поддержку: https://lists.gnu.org/mailman/listinfo/parallel

Смежные вопросы