详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别


Posted in Python onJune 23, 2017

详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别

os._exit() 和 sys.exit()

os._exit() vs sys.exit()

概述

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

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

sys.exit()会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。

举例说明

#!/usr/local/bin/env python
import os, sys

try:
  sys.exit(0)
except:
  print('die')
finally:
  print('cleanup')

try:
  os._exit(0)
except:
  print('die')
print('os.exit')#不打印直接退出了

输出:

die
cleanup

区别

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

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

一般来说os._exit() 用于在线程中退出

sys.exit() 用于在主线程中退出。

exit() 跟 C 语言等其他语言的 exit() 应该是一样的。
os._exit() 调用 C 语言的 _exit() 函数。

builtin.exit 是一个 Quitter 对象,这个对象的 call 方法会抛出一个 SystemExit 异常。

exit(0)和exit(1)

exit(0):无错误退出
exit(1):有错误退出
退出代码是告诉解释器的(或操作系统)

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
PyMongo安装使用笔记
Apr 27 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
python使用matplotlib绘制折线图教程
Feb 08 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
python的pytest框架之命令行参数详解(上)
Jun 27 Python
Python实现七个基本算法的实例代码
Oct 08 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
Ubuntu20下的Django安装的方法步骤
Jan 24 Python
pytorch实现ResNet结构的实例代码
May 17 Python
Python数据操作方法封装类实例
Jun 23 #Python
Python守护线程用法实例
Jun 23 #Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 #Python
Django自定义认证方式用法示例
Jun 23 #Python
Django实现的自定义访问日志模块示例
Jun 23 #Python
详解Python文本操作相关模块
Jun 22 #Python
python字符串过滤性能比较5种方法
Jun 22 #Python
You might like
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
javascript事件问题
2009/09/05 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
2014/06/26 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python实现FTP服务器服务的方法
2017/04/11 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
Python中求对数方法总结
2020/03/10 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
高二美术教学反思
2014/01/14 职场文书
大二学生学习个人自我评价
2014/01/19 职场文书
《海底世界》教学反思
2014/04/16 职场文书
合理化建议书
2015/02/04 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
工程项目合作意向书
2015/05/08 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL