os._exit()
import sys
sys.exit()
os._exit() 本身不抛出异常,直接将python程序终止退出,之后的所有代码都不会执行。os._exit(n)退出的机制是调用 C 语言的 _exit() 函数。__builtin__.exit 是一个 Quitter 对象,这个对象的 __call__ 方法会抛出一个 SystemExit 异常。常用在子线程的停止中。
sys.exit() 会抛出一个异常: SystemExit,异常也是对象,所有异常都是基类Exception的成员。python的异常名称放在内建命名空间中,所以不必导入exception模块。如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获该异常的代码,那么这些代码还是会执行。sys.exit(n)一般在交互式shell中退出时用到;n默认0,正常退出,可以捕获异常执行些清理工作。其他数值(1-127)为不正常,可抛异常事件供捕获。
一般来说os._exit() 用于在线程中退出。
sys.exit() 用于在主线程中退出。
举个例子
import os
os._exit(0)
except:
print('Program is dead.')
这个print是不会打印的,因为没有异常被捕获。
import sys
sys.exit(0)
except:
print('Program is dead.')
finally:
print('clean-up')
这里两个print都可以打印,因为sys.exit()抛出了异常。
结论
使用sys.exit()来退出程序比较优雅,调用它能引发SystemExit异常,然后我们可以捕获这个异常做些清理工作。而os._exit()将python解释器直接退出,后面的语句都不会执行。
一般情况下用sys.exit()就行;os._exit()可以在os.fork()产生的子进程里使用。
用python写工具 python写小工具
哈喽,大家好,今天给大家介绍两个 Python 好用的小工具。虽然用法简单,却能大大提高开发效率。1. tqdm当程序中for循环需要消耗大量时间来执行的时候,往往我们会添加一个计数器输出程序执行的进度。这种方式的缺点在于需要写一些与业务无关的代码,并且打印的信息过多。如果我们用tqdm可以用进度条的方式显示程序的执行进度,可以有效地避免上述缺点。使用方式非常简单import time