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.