详解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实现堆栈与队列的方法
Jan 15 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
Python入门必须知道的11个知识点
Mar 21 Python
Python按钮的响应事件详解
Mar 04 Python
python读写csv文件实例代码
Jul 05 Python
python多任务之协程的使用详解
Aug 26 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
Python datetime 如何处理时区信息
Sep 02 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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 在线打包_支持子目录
2008/06/28 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
JavaScript使用循环和分割来替换和删除元素实例
2014/10/13 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
使用svg实现动态时钟效果
2018/07/17 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Python re模块介绍
2014/11/30 Python
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
Python中List.index()方法的使用教程
2015/05/20 Python
Python3实现Web网页图片下载
2016/01/28 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
如何爬取通过ajax加载数据的网站
2019/08/15 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
诉讼代理人授权委托书
2014/04/08 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
大型活动组织方案
2014/05/10 职场文书
法律讲堂观后感
2015/06/11 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
创业项目大全(适合在家创业的项目)
2019/08/15 职场文书
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL