Звучит так, как будто вы хотите запустить несколько экземпляров скрипта Python параллельно, но запускать их одновременно столько раз, а когда один завершится, запустить другой. Для этого есть удобная утилита под названием "параллель", которую можно комбинировать с командой "seq" для генерации списка чисел.
seq -f '%03.0f' 0 N | parallel -j x "python {}"
Выше замените N верхним пределом. Замените x на максимальное количество скриптов для одновременной работы.
seq генерирует список номеров.
$ 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
Последняя часть выглядит как последовательность чисел, которую вы хотите использовать ... 5 - произвольная конечная точка, которую вы можете изменить.
Параллельный -jx "command {}" запускает x копий команды одновременно каждый раз, заменяя {} одним из значений из списка, сгенерированного seq. Так что если у вас есть последовательность 000-100 и вы поставляете -j 3, она будет работать:
python 000
python 001
python 002
Все одновременно. Когда один из этих выходов, скажем, "python 001" завершается первым, он запускает "python 003". Предположим, что "python 000" заканчивается следующим, он заменит "python 004" следующим и так далее, пока не завершит все 101 задание.
Очевидно, что вы не хотите устанавливать -j слишком высоко, иначе это приведет к перегрузке вашей системы.
seq - очень стандартная команда linux. Параллельно предлагается в качестве дополнительного пакета, устанавливаемого через менеджер пакетов для вашей системы. Как ни странно, системы на основе RedHat не включают его, но вы можете получить исходный код и двоичные файлы с официального сайта:
https://www.gnu.org/software/parallel/