python的两种退出方式

发布时间:2019-08-27 08:16:40编辑:auto阅读(1940)

    os._exit() vs sys.exit()

    概述

    python的程序有两种退出方式:os._exit(), sys.exit()。本文介绍这两种方式的区别和选择。

    os._exit()会直接将python程序终止,之后的所有代码都不会继续执行。

    sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。

     

    举例说明

    1 import os
    2 
    3 try:
    4     os._exit(0)
    5 except:
    6     print 'die.'

    此处不会打出"going to die"

     

    复制代码
    import sys
    
    try:
        sys.exit(0)
    except:
        print 'die'
    finally:
        print 'cleanup'
    复制代码

    输出:

    die

    cleanup

     

    区别

    综上,sys.exit()的退出比较优雅,调用后会引发SystemExit异常,可以捕获此异常做清理工作。os._exit()直接将python解释器退出,余下的语句不会执行。

    一般情况下使用sys.exit()即可,一般在fork出来的子进程中使用os._exit()

     

    参考:

    http://docs.python.org/2/library/exceptions.html#exceptions.SystemExit

     

关键字