为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Python中启动后台进程?

如何在Python中启动后台进程?

温温酱 2019-06-24 10:47:57
如何在Python中启动后台进程?我正在尝试将shell脚本移植到更具可读性的python版本。原始shell脚本启动几个进程(实用程序、监视器等)在“&”的背景中。如何在python中实现同样的效果?当python脚本完成时,我希望这些进程不要死。我确信这与守护进程的概念有某种关系,但我无法轻松找到如何做到这一点。
查看完整描述

3 回答

?
至尊宝的传说

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

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

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


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

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

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

这里的文件.


查看完整回答
反对 回复 2019-06-24
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

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背景的行为,但不要把它误认为是实际处于后台的过程。


查看完整回答
反对 回复 2019-06-24
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

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

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

import os
os.system("some_command &")

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


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 3022 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信