def main(self,argv):
do stuff.......
if __name__ == '__main__':
main(sys.argv[1:])
當我的腳本運行時,如何導致它立即運行main()作爲後臺進程? 它會運行到完成並將信息輸出到文件。如何在運行後在後臺啓動python腳本?
我忘了說...目標是能夠在任何操作系統上運行此操作。 我不想修改腳本在命令行中被調用的方式,我希望腳本本身使其在後臺運行。
def main(self,argv):
do stuff.......
if __name__ == '__main__':
main(sys.argv[1:])
當我的腳本運行時,如何導致它立即運行main()作爲後臺進程? 它會運行到完成並將信息輸出到文件。如何在運行後在後臺啓動python腳本?
我忘了說...目標是能夠在任何操作系統上運行此操作。 我不想修改腳本在命令行中被調用的方式,我希望腳本本身使其在後臺運行。
容易:
$ python yourpythonscript.py &
操作系統將處理爲你;)當然,你必須聲明,如果這是在Windows或* nix中。如果你正在運行的這下我覺得有一個選項那裏運行它的參數作爲後臺進程......
或者 -
如果您在Windows下運行這一點,你可能要檢查的cmd.exe
程序linux機器上,您可以使用ps aux | grep yourpythonscript.py
我想說明的是,它真的很值得學習常用的unix命令行工具。即使對於像我這樣的Windows開發人員來說:通過在開發工具箱中使用cygwin,可以解決圍繞主要開發工作的大量問題。本週新推出的熱門工具:sed,uniq,sort和comm。 – 2011-06-23 07:09:25
我會使用Python threading庫。這將允許您在後臺運行main()。
線程無法將整個進程置於後臺。 shell會阻塞,直到主進程退出,所以你需要分離一個新的進程。 – 2011-06-14 15:25:21
檢查進程在Windows上,使用pythonw.exe
而不是python.exe
運行程序。
在Unix和MacOS上,使用Python daemon recipe或python-daemon
包。
在linux下你可以使用&對後臺運行它,如果你想,即使你關閉外殼使用nohup命令它來運行: nohup python yourpythonscript.py &
您要運行腳本作爲一個守護進程?從包中檢查pypi可以幫助你:http://pypi.python.org/pypi?%3Aaction=search&term=daemon&submit=search,我從不使用任何人,所以我不能推薦任何人。 – mouad 2011-06-14 14:46:03