У меня есть цикл bash
который выглядит следующим образом:
for i in $(seq 0 $max); do
my_command $i
done
и я хотел бы запустить это параллельно на n
ядер. Я знаю, что я мог сделать
while [[ "$j" -le "$max" ]]; do
for i in $(seq 1 $ncores); do
my_command $j &
done
wait
done
но если время выполнения my_command
является линейным в $i
, то я теряю циклы ЦП, ожидая самой продолжительной функции. Как я могу непрерывно отправлять новые задания, чтобы задания $ncores
выполнялись в любой момент времени? Нужно ли мне запускать на моей машине фактический планировщик заданий, например torque
локально на моем компьютере, или я могу сделать это с помощью простого сценария bash
?