详解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使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
使用wxPython获取系统剪贴板中的数据的教程
May 06 Python
Python的Django框架中的数据库配置指南
Jul 17 Python
Python中%r和%s的详解及区别
Mar 16 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
Jan 15 Python
Python切片工具pillow用法示例
Mar 30 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
Windows下安装Scrapy
Oct 17 Python
Django之模板层的实现代码
Sep 09 Python
selenium WebDriverWait类等待机制的实现
Mar 18 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
May 26 Python
python实现人性化显示金额数字实例详解
Sep 25 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
第五节 克隆 [5]
2006/10/09 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
简单谈谈PHP面向对象之标识对象
2017/06/27 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
基于jquery的一个图片hover的插件
2010/04/24 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
2017/03/15 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
2019/06/19 Javascript
Vue中遍历数组的新方法实例详解
2019/07/21 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python实现的爬取网易动态评论操作示例
2018/06/06 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
解决Python3下map函数的显示问题
2019/12/04 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
python实现单机五子棋
2020/08/28 Python
如何通过python检查文件是否被占用
2020/12/18 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
企业统计员岗位职责
2013/12/13 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
上班旷工检讨书
2015/08/15 职场文书
解决mysql的int型主键自增问题
2021/07/15 MySQL
Vue3中的Refs和Ref详情
2021/11/11 Vue.js