сделать петлю параллельной

Как сделать этот цикл параллельным:

for a in $(seq 1 3) do for b in 0.1 0.2 do echo process with a=$a and b=$b & done done 

это параллельно или нет? На самом деле, я хочу запустить echo process with a=$a and b=$b параллельно для каждой комбинации значений a и b Вот результат запуска указанной оболочки:

 process with a=1 and b=0.1 process with a=2 and b=0.2 process with a=2 and b=0.1 process with a=3 and b=0.2 process with a=3 and b=0.1 process with a=1 and b=0.2 

Благодарю.

3 Solutions collect form web for “сделать петлю параллельной”

С GNU Parallel это выглядит так:

 parallel echo process with a={1} and b={2} ::: 1 2 3 ::: 0.1 0.2 seq 1 3 | parallel echo process with a={1} and b={2} :::: - ::: 0.1 parallel echo process with a={1} and b={2} :::: <(seq 1 3) ::: 0.1 0.2 

Я предполагаю, что echo является просто примером, поскольку параллелизующее echo вряд ли стоит того.

Если вещь, которую вы запускаете во внутреннем цикле, занимает какое-то время ( echo очень быстро запускается), тогда, когда петли запустили все асинхронные процессы, они будут работать одновременно .

Сами петли не являются «параллельными».

Это должно быть комментарий, но комментарии слишком малы.

Убедитесь, что ваше решение работает для вывода произвольных размеров и не смешивает выходные данные из одного задания с другим. Вот небольшой пример, чтобы проверить, что:

 #!/bin/bash # stress test of parallelizing programs longline() { # print one big line with 'a's followed by 'b's followed by 'c's perl -e 'print "@ARGV ", map { "$_"x10000000 } (a..c)' "$@" echo } echo "Run testprogram in parallel" for a in $(seq 1 3) do for b in 0.1 0.2 do longline $a $b & done done | # use 'tr' to compress many 'a's into a single 'a' # if the output is not 'abc' on every line, lines have been mixed tr -cs '@' echo "Run testprogram in serial" for a in $(seq 1 3) do for b in 0.1 0.2 do longline $a $b done done | tr -cs '@' echo "Compare with GNU Parallel" export -f longline parallel -kj0 longline :::: <(seq 1 3) ::: 0.1 0.2 | tr -cs '@' 
  • Параллельные скрипты Python на удаленной машине
  • Использовать файлы из команды find в параллельных пакетах
  • Одновременная запись в файл журнала из многих процессов
  • Можно ли одновременно выполнять несколько ядер?
  • rm -rf не работает при параллельном удалении
  • Читают ли трубы не больше, чем PIPE_BUF?
  • Новый сигнал поступает, когда выполнение выполняется в обработчике сигналов, как решить, что является первым?
  • `mpirun -np N`: что, если` N` больше моих физических ядер?
  • Может ли tar архивировать файлы параллельно?
  • Выполнить команду для нескольких файлов, соответствующих шаблону параллельно
  • Как я могу выдавать параллельные команды удаленным узлам с разными аргументами?
  • Interesting Posts

    Как переместить оконные элементы управления влево при использовании Compiz на XFCE?

    Как экспортировать переменную из Perl-скрипта в сценарий оболочки?

    Библиотека float.h не найдена при компиляции gtk + 3 / vte с ​​помощью Homebrew

    Команда высокого уровня для запроса нескольких ветвей snmp в одном сеансе tcp-сессии?

    Как сделать окно отображения Openbox только в определенной области

    Директива Alias, вероятно, никогда не будет соответствовать, поскольку она перекрывает предыдущий псевдоним

    Как установить трехмерные мониторы с помощью Kali Linux?

    Автозаполнение вкладки Bash / zsh: заданная начальная команда, игнорировать определенные файлы в каталоге с автозаполнением

    Mount изменяет время каталога до 1970

    В VMware я добавляю вторую сетевую карту для виртуальной машины, почему каталог-скрипты / не генерируют ifcfg-eno33554984?

    Как только вы монтируете файловую систему, как вы читаете и записываете файлы?

    Что значит ? означает в выражении cron?

    удаленный X-сервер не работает

    извлекать текст в файл csv из результата чтения нескольких файлов в определенные строки

    Безопасность шифрования SSH

    Linux и Unix - лучшая ОС в мире.