我如何退出一个脚本早,像die()命令在PHP?


当前回答

也可以简单地使用exit()。

请记住sys.exit(), exit(), quit()和os._exit(0)会杀死Python解释器。因此,如果它出现在execfile()从另一个脚本调用的脚本中,它将停止两个脚本的执行。

请参见“停止执行使用execfile调用的脚本”以避免这种情况。

其他回答

问题

在我的实践中,甚至有一种情况需要从其中一个进程中杀死整个多处理器应用程序。

如果您的应用程序使用唯一的主进程,那么以下函数可以很好地工作。但是在我的例子中,下列函数没有一个不能工作,因为应用程序还有许多其他活动进程。

辞职() 退出(0) os._exit (0) sys.exit (0) Os.kill (os.getppid(), 9) -其中os.getppid()是父进程的pid

最后一个进程杀死了主进程和它自己,但其余进程仍然存活。

解决方案

我不得不通过外部命令杀死它,最后使用pkill找到解决方案。

import os

# This can be called even in process worker and will kill
# whole application included correlated processes as well
os.system(f"pkill -f {os.path.basename(__file__)}")

我完全是个新手,但这肯定更干净,更可控

def main():
    try:
        Answer = 1/0
        print  Answer
    except:
        print 'Program terminated'
        return
    print 'You wont see this'

if __name__ == '__main__': 
    main()

...

程序终止

than

import sys
def main():
    try:
        Answer = 1/0
        print  Answer
    except:
        print 'Program terminated'
        sys.exit()
    print 'You wont see this'

if __name__ == '__main__': 
    main()

...

程序终止回溯(最近一次调用):文件“Z:\目录\testdieprogram.py”,第12行,在 main()文件“Z:\目录\testdieprogram.py”,第8行,在main中 SystemExit sys.exit ()

Edit

重点是,该计划顺利和平地结束,而不是“我已经停止!!!!”

from sys import exit
exit()

作为参数,您可以传递一个退出码,该退出码将返回给操作系统。默认值为0。

而您通常应该更喜欢sys。退出,因为它对其他代码更“友好”,它实际上所做的只是引发一个异常。

如果你确定你需要立即退出一个进程,并且你可能处于某个异常处理程序中,这个异常处理程序会捕获SystemExit,那么还有另一个函数——os。_exit——它在C级立即终止,不执行任何正常的解释器分解;例如,在"atexit"模块中注册的钩子不会被执行。

也可以简单地使用exit()。

请记住sys.exit(), exit(), quit()和os._exit(0)会杀死Python解释器。因此,如果它出现在execfile()从另一个脚本调用的脚本中,它将停止两个脚本的执行。

请参见“停止执行使用execfile调用的脚本”以避免这种情况。