У мене є 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
сценарію?