Я хотел бы использовать функцию параллельного запуска GNU, где он может выполнять команду и список, в который она подается параллельно, и выплевывать его после того, как все будет сделано, однако я не хочу устанавливать параллельный GNU на всех наших серверах.
Или, возможно, параллельная версия xargs
?
Есть ли ksh-реализация того, что делает GNU Parallel? В этом случае это не нужно делать по порядку, как это делает GNU Parallel - до тех пор, пока весь вывод может быть передан по конвейеру или сохранен. Я также хотел бы избежать использования временных файлов.
ksh
gnu
parallelism
gnu-parallel
Nitrodist
источник
источник
Ответы:
Если вы хотите распараллелить на машине с несколькими ядрами, вы можете просто использовать (GNU)
xargs
, например:Значение:
xargs
запускает до 16 процессов параллельно с./crunching
использованием 1 токена от stdin для каждого процесса.Вы также можете использовать
split
в сочетании с Xargs.Или вы можете создать простой Makefile для выполнения задания и вызова
make -f mymf -j $CORES
(вам нужны временные файлы для этого решения).PS: Руководство по параллельным GNU также включает некоторые сравнения с другими инструментами, включая xargs и make , что интересно, они пишут:
источник
xargs
Общеизвестно, что это плохо при параллельной работе, поскольку выход может смешиваться.Посмотрите, в
parallel --embed
какой части встроен GNU Parallel в тот же сценарий оболочки, из которого вы его используете.затем отредактируйте new_script.
источник