详解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 相关文章推荐
linux系统使用python监测系统负载脚本分享
Jan 15 Python
Python获取远程文件大小的函数代码分享
May 13 Python
pycharm在调试python时执行其他语句的方法
Nov 29 Python
浅谈Pandas:Series和DataFrame间的算术元素
Dec 22 Python
python实现几种归一化方法(Normalization Method)
Jul 31 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
python实现智能语音天气预报
Dec 02 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
深入了解Python enumerate和zip
Jul 16 Python
解决python3中os.popen()出错的问题
Nov 19 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完整的日历类(CLASS)
2006/11/27 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
一个仿微博登陆邮箱提示框js开发案例
2016/07/28 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
vue实现标签云效果的示例
2020/11/09 Javascript
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python requests库用法实例详解
2018/08/14 Python
利用Django-environ如何区分不同环境
2018/08/26 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
详解Python多线程下的list
2020/07/03 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
python中time包实例详解
2021/02/02 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
意大利在线药房:shop-farmacia.it
2019/03/12 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
《美丽的田园》教学反思
2014/03/01 职场文书
2014年节能工作总结
2014/12/18 职场文书
实习单位指导教师评语
2014/12/30 职场文书
培训班开班主持词
2015/07/02 职场文书
少先队入队仪式主持词
2015/07/04 职场文书