Я бы сделал это:
#!/usr/bin/env python
import subprocess
subprocess.run(['python', 'script1.py'])
subprocess.run(['python', 'script2.py'])
subprocess.run(['python', 'script3.py'])
Если вы хотите, чтобы каждый скрипт запускался только в том случае, если предыдущий был успешным:
#!/usr/bin/env python
import subprocess
subprocess.run('python script1.py && python script2.py && python script3.py', shell=True)
Я использую shell=True
здесь, потому что я полагаюсь на оболочку для интерпретации &&
и позволяю запускать следующий процесс только в том случае, если предыдущий был успешным.
Если вы хотите, чтобы все они работали параллельно друг с другом, и в фоновом режиме:
#!/usr/bin/env python
import subprocess
subprocess.run('python script1.py &', shell=True)
subprocess.run('python script2.py &', shell=True)
subprocess.run('python script3.py &', shell=True)
Я использую shell=True
здесь, потому что я полагаюсь на оболочку, чтобы интерпретировать &
как означающее, что я хочу, чтобы процессы выполнялись в фоновом режиме, чтобы я могут продолжать делать что-то еще во время работы.
В общем, я бы вообще не использовал Python для этого, я бы написал сценарий bash
вроде этого:
#!/bin/bash
python script1.py
python script2.py
python script3.py
Также, как правило, я бы сделал первую строку сценария Python следующим образом:
#!/usr/bin/env python
print('I am a Python script with shebang')
, тогда я бы сделал исполняемый файл сценария с:
chmod +x script.py
Теперь, вместо того, чтобы запускать его с:
python script.py
, ядро знает, какой интерпретатор для использования, поэтому мне не нужно каждый раз сообщать об этом, и я могу просто запустить его с помощью:
script.py
, если каталог, в котором он находится, находится в моем PATH. Или, если его нет в моем PATH, мне понадобится:
/path/to/script.py