web-dev-qa-db-ja.com

外部スクリプトをバックグラウンドで起動して実行する方法は?

私はこれらの2つの方法を試しました:

os.system("python test.py")

subprocess.Popen("python test.py", Shell=True)

どちらのアプローチも、メインプロセスをブロックするtest.pyが終了するまで待つ必要があります。私は「Nohup」がその仕事をすることができることを知っています。 test.pyまたは他のシェルスクリプトを起動してバックグラウンドで実行したままにするPython方法はありますか?

Test.pyが次のようになっているとします。

for i in range(0, 1000000):
    print i

Os.system()またはsubprocess.Popen()はどちらも、1000000行の出力が表示されるまでメインプログラムをブロックします。私が欲しいのは、test.pyをサイレントに実行し、メインプログラムの出力のみを表示することです。 test.pyの実行中に、メインプログラムが停止する場合があります。

11
jack

subprocess.Popen(["python", "test.py"])動作するはずです

メインスクリプトが終了しても、ジョブが停止する可能性があることに注意してください。この場合、subprocess.Popen(["Nohup", "python", "test.py"])を試してください

34
Aaron Digulla
os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")
1
Viswanadh