您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

注意:此答案的最新版本比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后台运行。请注意,调用.communicate()从返回的对象Popen将一直阻塞,直到完成为止,因此,如果要使其在后台运行,请不要这样做:

import subprocess
ls_output=subprocess.Popen(["sleep", "30"])
ls_output.communicate()  # Will block for 30 seconds

另外,有一点需要澄清:这里使用的“背景”纯粹是一个壳概念;从技术上讲,你的意思是你希望在等待进程完成时生成一个没有阻塞的进程。但是,我在这里使用“背景”来指代类似外壳背景的行为。

python 2022/1/1 18:24:05 有171人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶