Wie man die for-Schleife in der Bash parallelisiert, wobei die Anzahl der Prozesse begrenzt wird

Ich habe ein Bash-Skript ähnlich:

NUM_PROCS=$1
NUM_ITERS=$2

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

Wie kann die Anzahl der parallelen Prozesse am einfachsten auf NUM_PROCS begrenzt werden? Ich suche nach einer Lösung, die möglichst keine Pakete / Installationen / Module (wie GNU Parallel) erfordert.

Wenn ich den neuesten Ansatz von Charles Duffy ausprobiert habe, habe ich die folgende Fehlermeldung von bash -x erhalten:

+ 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

... mit anderen Zahlen zwischen 0 und 5 fortfahren, bis zu viele Prozesse gestartet und das Bash-Skript beendet wurden.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage