相关文章推荐
耍酷的书签  ·  Installing NumPy - NumPy·  5 天前    · 
耍酷的书签  ·  python numpy库怎么安装·  5 天前    · 
耍酷的书签  ·  安装Numpy | 莫烦Python·  5 天前    · 
耍酷的书签  ·  Android ...·  5 天前    · 
如何在Python中启动后台进程?我正在尝试将shell脚本移植到更具可读性的python版本。原始shell脚本启动几个进程(实用程序、监视器等)在“&”的背景中。如何在python中实现同样的效果?当python脚本完成时,我希望这些进程不要死。我确信这与守护进程的概念有某种关系,但我无法轻松找到如何做到这一点。
查看完整描述

TA贡献1719条经验 获得超10个赞

:这一答案不如2009年发布时的最新情况。使用 subprocess 现在推荐在其他答案中显示的模块。 在医生里

(请注意,子流程模块为生成新进程和检索其结果提供了更强大的工具;使用该模块比使用这些功能更好。)


如果希望在后台启动进程,可以使用 system() 并以shell脚本的方式调用它,或者您可以 spawn 它:

import os
os.spawnl(os.P_DETACH, 'some_long_running_command')

(或者,您也可以尝试使用较少的可移植性。 os.P_NOWAIT 国旗)。

这里的文件 .


查看完整回答

jkp 解决方案起作用,更新的处理方法(以及文档建议的方式)是使用 subprocess 模块。对于简单的命令,它的等价性,但它提供了更多的选项,如果你想做一些复杂的事情。

您的案例示例:

import subprocess
subprocess.Popen(["rm","-r","some.file"])

这应该会运行 rm -r somefile 在后台。 但要小心: subprocess.Popen() 如果python脚本中的任何内容都不取决于正在运行的命令的输出,则仅在后台运行一个进程:

例如,以下命令将 在后台运行:

import subprocess
ls_output=subprocess.Popen(["ls", "-a"], stdout=subprocess.PIPE)

见文件 这里 .

另外,需要澄清的一点是:“背景”纯粹是一个shell概念:您可能想要的是产生一个新的过程。我在这里使用了“背景”来指类似shell背景的行为,但不要把它误认为是实际处于后台的过程。


查看完整回答

你可能想知道答案 “如何在Python中调用外部命令” .

最简单的方法是使用 os.system 职能,例如:

import os
os.system("some_command &")

基本上,不管你把什么传递给 system 函数的执行方式将与您在脚本中将其传递给shell一样。


查看完整回答