Cómo paralelizar for-loop en bash limitando el número de procesos

Tengo un script bash similar a:

NUM_PROCS=$1
NUM_ITERS=$2

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

¿Cuál es la forma más directa de limitar el número de procesos paralelos a NUM_PROCS? Estoy buscando una solución que no requiera paquetes / instalaciones / módulos (como GNU Parallel) si es posible.

Cuando probé el último enfoque de Charles Duffy, recibí el siguiente error de 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

... continuando con otros números entre 0 y 5, hasta que se iniciaron demasiados procesos para que el sistema los maneje y se cierre el script bash.

Respuestas a la pregunta(4)

Su respuesta a la pregunta