详解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中文件遍历的两种方法
Jun 16 Python
python利用beautifulSoup实现爬虫
Sep 29 Python
Python3 能振兴 Python的原因分析
Nov 28 Python
Python列表计数及插入实例
Dec 17 Python
Python制作Windows系统服务
Mar 25 Python
idea创建springMVC框架和配置小文件的教程图解
Sep 18 Python
Appium Python自动化测试之环境搭建的步骤
Jan 23 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
Python3中对json格式数据的分析处理
Jan 28 Python
Python中with上下文管理协议的作用及用法
Mar 18 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
PHP5 安装方法
2006/10/09 PHP
学习使用PHP数组
2006/10/09 PHP
如何在PHP中使用Oracle数据库(3)
2006/10/09 PHP
探讨GDFONTPATH能否被winxp下的php支持
2013/06/21 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
PHP常用字符串函数用法实例总结
2020/06/04 PHP
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
HTML页面定时跳转方法解析(2种任选)
2016/12/22 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
vue-cli2.0转3.0之项目搭建的详细步骤
2018/12/11 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
微信小程序实现打卡签到页面
2020/09/21 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
Python入门必须知道的11个知识点
2018/03/21 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
Python中GIL的使用详解
2018/10/03 Python
Python中请不要再用re.compile了
2019/06/30 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
编写python代码实现简单抽奖器
2020/10/20 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
魅力惠奢品线上平台:MEI.COM
2016/11/29 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
中学教师岗位职责
2013/11/26 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
2014年协会工作总结
2014/11/22 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python