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

标签 python process daemon

我正在尝试将 shell 脚本移植到更具可读性的 python 版本。原始的 shell 脚本使用“&”在后台启动多个进程(实用程序、监视器等)。我怎样才能在python中达到同样的效果?当 python 脚本完成时,我希望这些进程不会消失。我确信它与守护进程的概念有关,但我无法轻松找到如何做到这一点。

最佳答案

jkp的解决方案有效,较新的做事方式(以及文档推荐的方式)是使用 subprocess 模块。对于简单的命令,它是等效的,但如果你想做一些复杂的事情,它提供了更多的选项。

您的案例示例:

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

这将在后台运行 rm -r some.file。请注意,在从 Popen 返回的对象上调用 .communicate() 将阻塞,直到它完成,所以如果您希望它在后台运行,请不要这样做:

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

参见文档 here .

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

关于python - 如何在 Python 中启动后台进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1196074/

相关文章:

python - 关于 Python 中空 (' ' ) 字符串的字符串方法的问题

python - 在 Python 3.x 中,为什么磁盘上没有 itertools 共享对象?

python - 创建pypy进程

Java GUI + 服务器问题

linux - 在 Linux Ubuntu 上将 jar 文件作为守护进程运行

python - 查找字符串中出现次数最多的字符

python - 即使收到 200 状态代码也重试 Scrapy 请求

java - 使用Java读取SQLCMD的输出文件

php - Linux 守护进程作为外部代理轮询 PHP webapp

linux - Docker 容器数据卷映射失败?