详解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的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
python使用 HTMLTestRunner.py生成测试报告
Oct 20 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
Python利用字典破解WIFI密码的方法
Feb 27 Python
Python 操作 ElasticSearch的完整代码
Aug 04 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
Python递归函数特点及原理解析
Mar 04 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 Python
Linux系统下升级pip的完整步骤
Jan 31 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的超级变量$_GET获取HTML表单(Form) 数据
2011/05/07 PHP
php.ini中date.timezone设置分析
2011/07/29 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php连接sftp的作用以及实例代码
2019/09/23 PHP
10个基于jQuery或JavaScript的WYSIWYG 编辑器整理
2010/05/06 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
轻松创建nodejs服务器(1):一个简单nodejs服务器例子
2014/12/18 NodeJs
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
详解vue-cli3 中跨域解决方案
2019/04/10 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
在Python中使用列表生成式的教程
2015/04/27 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Python JSON编解码方式原理详解
2020/01/20 Python
Python通过Schema实现数据验证方式
2020/11/12 Python
Python操作Excel的学习笔记
2021/02/18 Python
python中最小二乘法详细讲解
2021/02/19 Python
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
运动会拉拉队口号
2014/06/09 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
邀请函样本
2015/02/02 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
2014年终个人总结报告
2015/03/09 职场文书
2015年社区统计工作总结
2015/04/21 职场文书