13

私はこれらの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 がまだ実行されている間、メイン プログラムが停止することがあります。

4

2 に答える 2

38

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

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

于 2009-10-22T07:22:05.777 に答える
1
os.spawnlp(os.P_NOWAIT, "path_to_test.py", "test.py")
于 2009-10-22T07:54:28.877 に答える