Как запустить и запустить внешний script в фоновом режиме?

Я пробовал эти два метода:

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 все еще работает.

Ответ 1

subprocess.Popen(["python", "test.py"]) должен работать.

Обратите внимание, что работа может по-прежнему умирать, когда ваш основной script завершается. В этом случае попробуйте subprocess.Popen(["nohup", "python", "test.py"])

Ответ 2

os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")