详解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进阶之装饰器
May 11 Python
用python制作游戏外挂
Jan 04 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
pandas pivot_table() 按日期分多列数据的方法
Nov 16 Python
Python 编程速成(推荐)
Apr 15 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
windows中安装Python3.8.0的实现方法
Nov 19 Python
Python修改列表值问题解决方案
Mar 06 Python
python实现同一局域网下传输图片
Mar 20 Python
Python 实现将某一列设置为str类型
Jul 14 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 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网页后退不再出现过期
2007/03/08 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
ucenter通信原理分析
2015/01/09 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
PHP的运行机制与原理(底层)
2015/11/16 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
浅谈用Webpack路径压缩图片上传尺寸获取的问题
2018/02/22 Javascript
Vue封装的可编辑表格插件方法
2018/08/28 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
原生JS实现留言板功能
2020/02/08 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
用python登录Dr.com思路以及代码分享
2014/06/25 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
Tensorflow累加的实现案例
2020/02/05 Python
前端制作动画的几种方式(css3,js)
2016/12/12 HTML / CSS
买房子个人收入证明
2014/01/16 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
食品安全标语
2014/06/07 职场文书
信用卡工资证明范本
2014/10/17 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
python实现简易名片管理系统
2021/04/11 Python
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Python初学者必备的文件读写指南
2021/06/23 Python
科普 | 业余无线电知识-波段篇
2022/02/18 无线电