Как распараллелить цикл for в bash, ограничив число процессов

У меня есть скрипт, похожий на:

NUM_PROCS=$1
NUM_ITERS=$2

for ((i=0; i<$NUM_ITERS; i++)); do
    python foo.py $i arg2 &
done

Какой самый простой способ ограничить количество параллельных процессов до NUM_PROCS? Я ищу решение, которое не требует пакетов / установок / модулей (например, GNU Parallel), если это возможно.

Когда я попробовал последний подход Чарльза Даффи, я получил следующую ошибку от bash -x:

+ python run.py args 1
+ python run.py ... 3
+ python run.py ... 4
+ python run.py ... 2
+ read -r line
+ python run.py ... 1
+ read -r line
+ python run.py ... 4
+ read -r line
+ python run.py ... 2
+ read -r line
+ python run.py ... 3
+ read -r line
+ python run.py ... 0
+ read -r line

... продолжая с другими числами от 0 до 5, пока не запустится слишком много процессов для обработки системой, и сценарий bash не будет завершен.