如何在运行后在后台启动python脚本?

如何在运行后在后台启动python脚本?

问题描述:

def main(self,argv): 
    do stuff....... 

if __name__ == '__main__': 
    main(sys.argv[1:]) 

当我的脚本运行时,如何导致它立即运行main()作为后台进程? 它会运行到完成并将信息输出到文件。如何在运行后在后台启动python脚本?

我忘了说...目标是能够在任何操作系统上运行此操作。 我不想修改脚本在命令行中被调用的方式,我希望脚本本身使其在后台运行。

+0

您要运行脚本作为一个守护进程?从包中检查pypi可以帮助你:http://pypi.python.org/pypi?%3Aaction=search&term=daemon&submit=search,我从不使用任何人,所以我不能推荐任何人。 – mouad 2011-06-14 14:46:03

容易:

$ python yourpythonscript.py & 

操作系统将处理为你;)当然,你必须声明,如果这是在Windows或* nix中。如果你正在运行的这下我觉得有一个选项那里运行它的参数作为后台进程......

或者 -

如果您在Windows下运行这一点,你可能要检查的cmd.exe程序linux机器上,您可以使用ps aux | grep yourpythonscript.py

+0

我想说明的是,它真的很值得学习常用的unix命令行工具。即使对于像我这样的Windows开发人员来说:通过在开发工具箱中使用cygwin,可以解决围绕主要开发工作的大量问题。本周新推出的热门工具:sed,uniq,sort和comm。 – 2011-06-23 07:09:25

我会使用Python threading库。这将允许您在后台运行main()。

+0

线程无法将整个进程置于后台。 shell会阻塞,直到主进程退出,所以你需要分离一个新的进程。 – 2011-06-14 15:25:21

检查进程在Windows上,使用pythonw.exe而不是python.exe运行程序。

在Unix和MacOS上,使用Python daemon recipepython-daemon包。

在linux下你可以使用&对后台运行它,如果你想,即使你关闭外壳使用nohup命令它来运行: nohup python yourpythonscript.py &