详解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多线程抓取天涯帖子内容示例
Apr 03 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Python中函数及默认参数的定义与调用操作实例分析
Jul 25 Python
对Python中type打开文件的方式介绍
Apr 28 Python
PyQt5组件读取参数的实例
Jun 25 Python
关于Pytorch的MLP模块实现方式
Jan 07 Python
Django操作session 的方法
Mar 09 Python
keras输出预测值和真实值方式
Jun 27 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
Feb 01 Python
Python网络编程之ZeroMQ知识总结
Apr 25 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 引用(&)详解
2009/11/20 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
删除重复数据的算法
2006/11/23 Javascript
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
微信小程序实现消息框弹出动画
2020/04/18 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
Python实现把xml或xsl转换为html格式
2015/04/08 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
Python 连接 MySQL 的几种方法
2020/09/09 Python
python 实用工具状态机transitions
2020/11/21 Python
群胜软件Java笔试题
2012/09/29 面试题
事业单位个人应聘自荐信
2013/09/21 职场文书
校园十大歌手策划书
2014/02/01 职场文书
统计系教授推荐信
2014/02/28 职场文书
大型公益活动策划方案
2014/08/20 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
2015年财政局工作总结
2015/05/21 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android