13

我尝试了这两种方法:

os.system("python test.py")

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

两种方法都需要等到 test.py 完成阻塞主进程。我知道“nohup”可以完成这项工作。是否有 Python 方法可以启动 test.py 或任何其他 shell 脚本并让它在后台运行?

假设 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 回答