如何在后台启动和运行外部脚本?

jac*_*ack 11 python external-process background-process

我尝试了这两种方法:

os.system("python test.py")

subprocess.Popen("python test.py", shell=True)
Run Code Online (Sandbox Code Playgroud)

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

假设test.py是这样的:

for i in range(0, 1000000):
    print i
Run Code Online (Sandbox Code Playgroud)

os.system()或subprocess.Popen()都将阻止主程序,直到显示1000000行输出.我想要的是让test.py以静默方式运行并仅显示主程序输出.当test.py仍在运行时,主程序可能会安静.

Aar*_*lla 34

subprocess.Popen(["python", "test.py"]) 应该工作.

请注意,当主脚本退出时,作业可能仍会死亡.在这种情况下,试试subprocess.Popen(["nohup", "python", "test.py"])

  • 只有在你请求'stdout = PIPE`时才会发生这种情况.哪个版本的Python?你可以在调用Popen之后添加一个`print"xxx"`来检查它是否真的阻塞了吗? (2认同)