我正在尝试将 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/