Были некоторые аналогичные вопросы, но моя проблема заключается не в том, чтобы "запускать несколько программ параллельно" - это можно сделать тривиально с помощью parallel
или xargs
.
Мне нужно распараллелить функции Bash.
Представьте себе такой код:
for i in "${list[@]}"
do
for j in "${other[@]}"
do
# some processing in here - 20-30 lines of almost pure bash
done
done
Некоторая обработка требует вызовов внешних программ.
Я хотел бы запустить некоторые (4-10) задачи, каждый из которых работает для разных $i
. Общее количество элементов в $list составляет > 500.
Я знаю, что могу поместить весь цикл for j ... done
во внешний script и просто вызвать эту программу параллельно, но можно ли обойтись без разделения функций между двумя отдельными программами?