详解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 相关文章推荐
pycharm安装图文教程
May 02 Python
Python最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
Django 开发环境配置过程详解
Jul 18 Python
python根据时间获取周数代码实例
Sep 30 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
如何利用python之wxpy模块玩转微信
Aug 17 Python
python3定位并识别图片验证码实现自动登录功能
Jan 29 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 Python
PyMongo 查询数据的实现
Jun 28 Python
LeetCode189轮转数组python示例
Aug 05 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中实现方案
2012/11/02 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
PHP微商城开源代码实例
2019/03/27 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
2016/01/26 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
python定时关机小脚本
2018/06/20 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
numpy 声明空数组详解
2019/12/05 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
某公司面试题
2012/03/05 面试题
监理员的岗位职责
2013/11/13 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
教师简历自我评价
2014/02/03 职场文书
《观舞记》教学反思
2014/04/16 职场文书
县级文明单位申报材料
2014/05/23 职场文书
提拔干部考察材料
2014/05/26 职场文书
银行给客户的感谢信
2015/01/23 职场文书
初中语文教学反思范文
2016/03/03 职场文书
Java后台生成图片的完整步骤
2021/08/04 Java/Android
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL
配置nginx负载均衡
2022/05/06 Servers
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server