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

14 投票
2 回答
57275 浏览
提问于 2025-04-15 15:16

我试了这两种方法:

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还在运行的时候就先结束。

2 个回答

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

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

39

使用 subprocess.Popen(["python", "test.py"]) 这个命令应该可以正常运行。

不过要注意,如果你的主程序结束了,这个任务可能也会停止。为了避免这种情况,可以试试 subprocess.Popen(["nohup", "python", "test.py"]) 这个命令。

撰写回答