Я бы использовал GNU Parallel для этого, хотя кажется, что он генерирует только 16 заданий, а не 20, которые вы указываете:
parallel --dry-run python sim.py ::: model{1,2} ::: weak strong ::: {a..d}
Пример вывода
python sim.py model1 weak a
python sim.py model1 weak b
python sim.py model1 weak c
python sim.py model1 weak d
python sim.py model1 strong a
python sim.py model1 strong b
python sim.py model1 strong c
python sim.py model1 strong d
python sim.py model2 weak a
python sim.py model2 weak b
python sim.py model2 weak c
python sim.py model2 weak d
python sim.py model2 strong a
python sim.py model2 strong b
python sim.py model2 strong c
python sim.py model2 strong d
Если это выглядит хорошо, запустите его всерьез без --dry-run
.Если вы действительно хотите ограничить число параллельных заданий до 20, используйте:
parallel -j 20 ...
Существует множество очень гибких опций для обработки журналов, отчетов и обработки ошибок, если вы запускаете man parallel
.
Я немного ленив / лаконичен с обработкой параметров, вы можете быть более точным с:
parallel --dry-run python sim.py {1} something {2} somethingelse {3} true ::: model{1,2} ::: weak strong ::: {a..d}