Parece que você deseja executar várias instâncias do script python em paralelo, mas só executa tantas de uma vez e quando uma termina, inicia outra. Existe um utilitário prático para o chamado "paralelo", que pode ser combinado com o comando "seq" para gerar a lista de números.
seq -f '%03.0f' 0 N | parallel -j x "python {}"
Acima, substitua N pelo limite superior. Substitua x pelo número máximo de scripts a serem executados simultaneamente.
seq gera a lista de números.
$ seq 5
1
2
3
4
5
$ seq 0 5
0
1
2
3
4
5
$ seq -f '%03.0f' 0 5
000
001
002
003
004
005
A última parte se parece com a seqüência de números que você está querendo usar ... 5 sendo um ponto de extremidade arbitrário que você pode alterar.
O comando parallel -j x "{}" executa x cópias do comando simultaneamente cada vez que substitui o {} por um dos valores da lista gerados por seq. Então, se você tiver uma sequência de 000-100 e você fornecer -j 3, ela será executada:
python 000
python 001
python 002
tudo ao mesmo tempo. Quando uma dessas saídas, digamos "python 001" for concluída primeiro, ela iniciará "python 003". Suponha que "python 000" termine em seguida, ele substituirá "python 004" e assim por diante até que conclua todos os 101 trabalhos.
Obviamente, você não quer deixar muito alto ou sobrecarregará seu sistema.
seq é um comando linux muito padrão. paralelo é oferecido como um pacote opcional instalável através do gerenciador de pacotes para o seu sistema. Estranhamente sistemas baseados em RedHat não incluem, mas você pode obter fontes e binários a partir do site oficial: