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

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

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



温温酱
浏览 3023回答 3
3回答

至尊宝的传说

注:这一答案不如2009年发布时的最新情况。使用subprocess现在推荐在其他答案中显示的模块。在医生里(请注意,子流程模块为生成新进程和检索其结果提供了更强大的工具;使用该模块比使用这些功能更好。)如果希望在后台启动进程,可以使用system()并以shell脚本的方式调用它,或者您可以spawn它:import os os.spawnl(os.P_DETACH, 'some_long_running_command')(或者,您也可以尝试使用较少的可移植性。os.P_NOWAIT国旗)。见这里的文件.

慕姐4208626

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

慕码人8056858

你可能想知道答案“如何在Python中调用外部命令”.最简单的方法是使用os.system职能,例如:import os os.system("some_command &")基本上,不管你把什么传递给system函数的执行方式将与您在脚本中将其传递给shell一样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python