详解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实现一个简单的多线程TCP服务器的教程
May 05 Python
MySQL最常见的操作语句小结
May 07 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
全面理解Python中self的用法
Jun 04 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
python制作填词游戏步骤详解
May 05 Python
Python3 合并二叉树的实现
Sep 30 Python
python如何使用socketserver模块实现并发聊天
Dec 14 Python
基于Python执行dos命令并获取输出的结果
Dec 30 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
python实现自动化群控的步骤
Apr 11 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脚本的10个技巧(1)
2006/10/09 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
2012/01/12 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
[原创]PHP字符串中插入子字符串方法总结
2016/05/06 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
网页下载文件期间如何防止用户对网页进行其他操作
2014/06/27 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
关于动态执行代码(js的Eval)实例详解
2016/08/15 Javascript
AngularJS实现路由实例
2017/02/12 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python中dictionary items()系列函数的用法实例
2014/08/21 Python
python实现无证书加密解密实例
2014/10/27 Python
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
护士岗位职责
2014/02/16 职场文书
租房协议书范本
2014/04/09 职场文书
献爱心倡议书
2014/04/14 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书