详解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 相关文章推荐
Python实现从脚本里运行scrapy的方法
Apr 07 Python
Python中的hypot()方法使用简介
May 18 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
详解用Python为直方图绘制拟合曲线的两种方法
Aug 21 Python
快速解决docker-py api版本不兼容的问题
Aug 30 Python
python 利用turtle模块画出没有角的方格
Nov 23 Python
python如何使用Redis构建分布式锁
Jan 16 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
PHP 文件上传全攻略
2010/04/28 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
jquery插件制作教程 txtHover
2012/08/17 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
JavaScript队列的应用实例详解【经典数据结构】
2017/04/12 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
vue-test-utils初使用详解
2019/05/23 Javascript
通过滑动翻页效果实现和移动端click事件问题
2021/01/26 Javascript
Python生成随机数的方法
2014/01/14 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
为什么Python中没有"a++"这种写法
2018/11/27 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
公务员培训自我鉴定
2013/09/19 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
食品安全承诺书
2014/05/22 职场文书
安全员岗位职责范本
2015/04/11 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL