Как заставить gnuparallel последовательно выполнять набор команд?

474
Mr Purple

Gnu Parallels - это мощный инструмент, который я использую для запуска множества независимых команд BASH в виде одного набора параллельно. Я хотел бы иметь возможность запускать те же команды ПОСЛЕДОВАТЕЛЬНО без существенных изменений в команде, которую я использую. Я знаю, что есть переключатель, который заставляет выход возвращаться при последовательном запуске THOUGH, но я бы хотел, чтобы gnuparallel фактически выполнялся последовательно. Моя причина в целях тестирования на машине, которая имеет склонность к перегреву, решение моей проблемы с аппаратным обеспечением не вариант, более того, можно потенциально представить другие режимы тестирования, для которых было бы полезно последовательно запустить gnuparallel.

Так. Есть ли способ просто запустить gnuparallel последовательно или мне нужно будет вручную распаковать набор команд gnuparallel в команды его компонентов и запустить их последовательно?

2
Если цель программы состоит в том, чтобы использовать преимущества параллелизма ядер / потоков, то она в некотором роде побеждает, если попросить ее вести себя последовательно. Если вы хотите, чтобы команды выполнялись последовательно, то они могут быть просто написаны без использования параллели. killermist 9 лет назад 0
@killermist Если у вас длинная команда, которую вы хотите выдавать по одному аргументу за раз, но хотите запускать ее последовательно, то сборка команды с использованием GNU Parallel может быть короче. Ole Tange 9 лет назад 1
Хех. Для этого я использую циклы bash `for`. `для аргумента в этом что-то другое; do / usr / bin / somecommand --flaghere "$ аргумент" другой _ "$ аргумент"; сделано` killermist 9 лет назад 0
У @OleTange есть идея. Кто-то может хотеть, чтобы их процессы запускались последовательно, но все же хотел бы использовать мощный синтаксис GNU Parallel. Mr Purple 9 лет назад 0
@killermist Здесь используется GNU Parallel: `rallel / usr / bin / somecommand --flaghere {} other_ {} ::: это что-то другое` # Несколько короче и меньше цитирование Ole Tange 9 лет назад 0

1 ответ на вопрос

3
garyjohn

parallelСтраница человек говорит, что --jobsвариант ( так же как -j, --max-procsи -P) определяет количество заданий, выполняемых параллельно. Таким образом, выполнение parallelс --jobs 1должно запускать ваши задания в последовательности.

Я думал, что будет переключатель, но не смотрел на варианты с вашей точки зрения. Это решение позволит динамически выбирать количество одновременных процессов для запуска. Это отвечает на мой вопрос даже лучше, чем я надеялся. Mr Purple 9 лет назад 0
Для дополнительной динамики используйте `-j файл` и изменяйте содержимое` файла` во время работы GNU Parallel. Ole Tange 9 лет назад 0
Тем не менее, я понял, что `-j1` не только ограничивает число параллельных заданий до 1, но и ограничивает текущее задание одним ядром. Принимая во внимание, что для выполнения той же работы локально на моем компьютере используются все доступные ядра. Могу ли я каким-то образом обеспечить последовательное выполнение, но разрешить каждому заданию использовать несколько ядер параллельно? CGFoX 6 лет назад 0

Похожие вопросы