Как запустить внешний скрипт в фоновом режиме?[дубликат]
-
05-07-2019 - |
Вопрос
На этот вопрос уже есть ответ здесь:
- Как запустить фоновый процесс в Python? 7 ответов
Я попробовал эти два метода:
os.system("python test.py")
subprocess.Popen("python test.py", shell=True)
Оба подхода должны дождаться завершения test.py, который блокирует основной процесс.Я знаю, что «nohup» справится с этой задачей.Есть ли способ Python запустить test.py или любые другие сценарии оболочки и оставить их работать в фоновом режиме?
Предположим, что test.py выглядит следующим образом:
for i in range(0, 1000000):
print i
И os.system(), и subprocess.Popen() будут блокировать основную программу до тех пор, пока не будет отображено 1000000 строк вывода.Я хочу, чтобы test.py работал автоматически и отображал только вывод основной программы.Основная программа может зависнуть, пока test.py все еще работает.
Решение
subprocess.Popen(["python", "test.py"])
должно сработать.
Обратите внимание, что задание все равно может завершиться после завершения основного сценария.В этом случае попробуйте subprocess.Popen(["nohup", "python", "test.py"])
Другие советы
os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")