【问题标题】:How to start a python script in the background once it's run?运行后如何在后台启动python脚本?
【发布时间】:2011-06-14 14:39:06
【问题描述】:
def main(self,argv):
    do stuff.......

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

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

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

【问题讨论】:

  • 您想将您的脚本作为守护进程运行吗?从可以帮助你的包中检查 pypi:pypi.python.org/…,我从不使用其中的任何一个,所以我不能推荐任何人。

标签: python process background


【解决方案1】:

简单:

$ python yourpythonscript.py &

操作系统会为您处理;)当然,您必须说明这是在 Windows 上还是在 *nix 上。

如果您在 Windows 下运行此程序,您可能需要检查 cmd.exe 程序 - 我认为那里有一个选项可以将其参数作为后台进程运行...

或者如果你在linux机器下运行这个,你可以使用ps aux | grep yourpythonscript.py查看进程

【讨论】:

  • 我想指出,学习常用的 unix 命令行工具真的是值得的。即使对于像我这样的 Windows 开发人员:在您的开发盒上使用 cygwin,围绕您的主要开发工作的大量问题都可以得到解决。本周新的热门工具:seduniqsortcomm
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 线程对于将整个过程置于后台没有用处。 shell 会一直阻塞,直到主进程退出,所以你需要 fork 一个新进程。
    【解决方案4】:

    在 linux 中,您可以使用 & 在后台运行它,如果您希望即使关闭该 shell 也可以运行它,请使用 nohup 命令: nohup python yourpythonscript.py &

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 1970-01-01
      相关资源
      最近更新 更多