详解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中声明只包含一个元素的元组数据方法
Aug 25 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
Python3.x对JSON的一些操作示例
Sep 01 Python
基于Python的文件类型和字符串详解
Dec 21 Python
使用Python对微信好友进行数据分析
Jun 27 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 Python
Python3之外部文件调用Django程序操作model等文件实现方式
Apr 07 Python
解决python绘图使用subplots出现标题重叠的问题
Apr 30 Python
Django使用echarts进行可视化展示的实践
Jun 10 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笔记之:php数组相关函数的使用
2013/04/26 PHP
编写Js代码要注意的几条规则
2010/09/10 Javascript
jquery插件制作 自增长输入框实现代码
2012/08/17 jQuery
js检查页面上有无重复id的实现代码
2013/07/17 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
解决Jquery下拉框数据动态获取的问题
2018/01/25 jQuery
js装饰设计模式学习心得
2018/02/17 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
python编码最佳实践之总结
2016/02/14 Python
Python创建字典的八种方式
2019/02/27 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
女士时装鞋:Chinese Laundry
2018/08/29 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
Python如何实现单例模式
2016/06/03 面试题
电信营业员自我评价分享
2014/01/17 职场文书
活动总结书
2014/05/08 职场文书
工作作风建设心得体会
2014/10/22 职场文书
2014年干部作风建设总结
2014/10/23 职场文书
2014年政协工作总结
2014/12/09 职场文书
Redis读写分离搭建的完整步骤
2021/09/14 Redis
DIY胆机必读:各国电子管评价
2022/04/06 无线电