Python学习系列之exit语句

python中os._exit(0) 强制关闭进程后来杀死线程 会强制终止整个进程,所有线程都会被杀死。应谨慎使用,仅在确实需要立即终止程序且不需要进行任何清理操作时使用。优先选择更温和的退出方法(如sys.exit()),以确保资源能够被正确释放,维护程序的稳定性和数据的一致性。 阅读详情
AI摘要

本文深入解析了Python中三种主要的程序退出方式:sys.exit(), os._exit(), 和 exit()/quit()的区别与应用场景。探讨了它们如何影响程序的执行流程,包括异常处理与资源清理,并对比了在主线程与子线程中各自的优劣。

一、定义

1.1 exit()

exit():结束整个程序。

       在python中运行一段代码,如果在某处已经完成整次任务,可以用exit退出整个运行。并且还可以在exit()的括号里加入自己退出程序打印说明。不过注意在py3中要加单引号或双引号。

1.2 os._exit() vs sys.exit() vs exit()

python的程序有多种退出方式:os._exit(), sys.exit(),exit()/quit()。

1.2.1 sys.exit()

Help on built-in function exit in module sys:在模块sys中,可以帮助内置函数退出的。

一般是退出Python程序的首选方法。该方法中包含一个参数status,默认为0,表示正常退出, 其他都是异常退出。

sys.exit()会引发一个异常:SystemExit,这是唯一一个不会被认为是错误的异常。

如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获此异常的代码,那么这些代码还是会执行。捕获这个异常可以做一些额外的清理工作。n默认值为0,0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。一般主程序中使用此退出。

SystemExit 并不派生自Exception 所以用Exception捕捉不到该SystemEixt异常,应该使用SystemExit来捕捉。

1.2.2 os._exit()

os._exit() 会直接将python程序终止,之后的所有代码都不会继续执行。退出 Python 解释器,不抛异常, 不执行相关清理工作,其后的代码都不执行。其使用会受到平台的限制,但我们常用的Win32平台和基于UNIX的平台不会有所影响, 常用在子进程的退出。一般来说os._exit() 用于在线程中退出,sys.exit() 用于在主线程中退出。

os._exit() 调用 C 语言的 _exit() 函数。

1.2.3 exit()/quit()

exit()/quit(),抛出SystemExit异常,类似于sys.exit()。一般在交互式shell中退出时使用。

1.2.4 区别

综上,sys.exit()的退出比较优雅,调用后会引发SystemExit异常,可以捕获此异常做清理工作。os._exit()直接将python解释器退出,余下的语句不会执行。

  • 一般在fork出来的子进程中使用os._exit(),os._exit() 用于在子进程,线程中退出 。
  • sys.exit() 用于在主线程中退出。

1.2.5 exit()与sys.exit()

exit() 跟 C 语言等其他语言的 exit() 应该是一样的。 

一开始觉得exit()和sys.exit()用法完全一样,是不是一个函数,后来在stackoverflow中看到一个答案也不知道对不对,先这样理解吧:

exit is a helper for the interactive shell - sys.exit is intended for use in programs.

The site module (which is imported automatically during startup, except if the -S command-line option is given) adds several constants to the built-in namespace (e.g. exit). They are useful for the interactive interpreter shell and should not be used in programs. 

exit is defined in site.py and _sitebuiltins.py,sys.exit does so in sysmodule.c 

        也就是说exit是用于用户交互式shell,而sys.exit才是内部编码使用的。site是自动导入的模块,类似于lang包,里面有一些可以直接用的函数比如exit,但多用于交互式的shell,而不应该用于编码中。

builtin.exit 是一个 Quitter 对象,这个对象的 call 方法会抛出一个 SystemExit 异常。

1.3 exit(0)和exit(1)

exit(0) 在很多类型的操作系统里,exit(0) 可以中断某个程序,而其中的数字参数则用来表示程序是否是碰到错误而中断。

exit(1) 表示发生了错误;exit(0) 则表示程序是正常退出的。
退出代码是告诉解释器的(或操作系统)。实际运用中可以使用任何整型数据,表示不同的自定义错误类型。

二、总结

 

搞懂python的os._exit()、sys.exit()和exit()区别 在Linux操作系统中,当进程退出时,它会与操作系统进行一系列的交互来释放资源、关闭文件描述符等。 阅读详情

相关推荐

使用Python的`exit`函数定义上下文管理器的退出操作

函数来定义上下文管理器的退出操作,我们可以在离开上下文时执行自定义的清理操作。函数是Python内置的一个函数,可以在定义上下文管理器时用于指定退出操作。在Python中,上下文管理器是一种用于管理资源的机制,它确保在使用资源后正确地释放它们。在上下文中执行一些操作后,离开上下文时会调用。方法中,我们可以执行任何我们希望在离开上下文时执行的操作。函数定义上下文管理器的退出操作,并提供相应的源代码示例。方法用于在进入上下文之前执行一些操作,而。方法用于在离开上下文时执行一些清理操作。的自定义上下文管理器。

BUG?不存在的! 283

为什么 Python 中的 exit()无法退出程序?

我们在Python交互环境的里面,可能会使用exit()来退出程序,例如:有时候,当我们想让Python程序在遇到某些条件的时候退出,也可以使用exit()但有时候,你会发现exit()似乎出了一些问题。执行它以后,程序虽然确实也会结束,但是它会报错。运行效果如下图所示:还有一些时候,exit()运行效果如下图所示。exit()quit()sys.exit()和os._exit()有什么区别和联系。实际上,exit()quit()和sys.exit()

xxue345678的博客 3585

【Python系列】os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别

Date: 2018.6.18 端午 文章目录1、参考2、Python中几种退出函数的用法 1、参考 https://blog.youkuaiyun.com/geekleee/article/details/52794826 https://docs.python.org/2/library/exceptions.html#exceptions.SystemExit 2、Python中几种退出函数的用法 sys.exit():这个模块函数会引发一个异常:SystemExit,如果这个异常没有被捕获,那么python

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 5399

Python exit函数

Python exit函数介绍、使用和注意事项。

TCatTime的博客 4万+

sys.exit和其他类似的Python语句的使用示例和区别

它们的主要区别在于sys.exit()函数是sys模块中的一个函数,它引发SystemExit异常并提供了一个退出代码。它们的主要区别在于sys.exit()函数是sys模块中的一个函数,它引发SystemExit异常并提供了一个退出代码。本文将详细介绍sys.exit()函数的使用示例和与其他类似语句的区别,并提供相应的源代码示例。希望本文提供的示例代码和解释能够帮助你理解sys.exit()函数以及与其他类似语句的区别sys.exit()函数和其他类似的Python语句的使用示例和区别。

ByteBuster的博客 135

【Ambari-Metrics监控】Grafana+Infinity快速构建DEMO-实战教学

摘要:本文介绍了如何通过Infinity插件在Grafana中监控Ambari-Metrics(AMS)的CPU核数指标。内容包括配置AMS REST API数据源、创建Dashboard面板、设置JSON解析规则,将时间戳和数值映射为时序数据。最终实现单个节点CPU核数曲线的可视化展示,该方法可扩展至其他AMS指标监控。文章提供了完整的配置示例和API调用验证方法,适用于Grafana 9.x及以上版本对接Ambari集群监控场景。

TTBIGDATA的博客 1350

if语句中有exit()语句

if语句中有exit()语句 if len(sys.argv) != 2: print("-"*30) print("tips:") print("python xxxx.py 192.168.100.101...

weixin_30639719的博客 4674

Kolla 容器化 高可用OpenStack 部署与 Ceph 集群集成

本文介绍了 Kolla 项目在容器化 OpenStack 部署和管理方面的应用,以及与 Ceph 集群的集成。Kolla 项目通过容器技术提供了一种简化和自动化的 OpenStack 部署方法,同时实现了易于升级和回滚的特点。本文还探讨了 Kolla 在实现零宕机升级方面的进展,并分析了其对 OpenStack 用户和社区的重要意义。

we22635的博客 2701

python中exit和break区别_python中的break、continue、exit()、pass全面解析

python中的break、continue、exit()、pass全面解析1、breakbreak是终止本次循环,比如你很多个while循环,你在其中一个while循环里写了一个break,满足条件,只会终止这个while里面的循环,程序会跳到上一层while循环继续往下走以简单的for循环来举例for i in range(10):print("-----%d-----" %i)for j i...

weixin_39768388的博客 2418

【Blockly开发教程】01 初识Blockly

Blockly 是由 Google 开发的开源代码库,它可以为网页程序和移动端应用程序添加可视化代码编辑器。

Bright的博客 4512

基于Joplin和Joplin Server搭建私有云笔记

我们知道,多端同步功能是笔记工具最重要的功能。只有实现了多端同步,我们才能在工作电脑和手机之间无缝切换笔记体验。Joplin 在同步上做得不错,支持 Dropbox、OneDrive 和 AWS s3(当然国内都没法用),支持 WebDAV 协议,也支持自家的 Joplin Server。 本文介绍如何在自己的服务器上搭建 Joplin Server,并配置好 Joplin Desktop 的同步功能。 前置条件 安装docker 创建 Joplin Server 配置文件 创建配置文件,~/docke

代码时光 1万+

python中break, exit, continue语句的基础知识

1. break语句 break: 跳出整个循环, 不会再执行循环后面的内容 for i in range(10): if i==5: break print(i) print('westos') 2. continue语句 continue: 跳出本次循环,continue后面的代码不会执行 for i in range(7): if i==5: ...

yrx420909的博客 260

方法二:旋转机械动平衡精度计算

本文以实际案例为基础,系统阐述基于ISO 1940标准的动平衡精度G GG等级计算方法。通过角速度转换、许用剩余不平衡量e p e r e_{per}e per ​ 推导及G GG等级公式应用,结合惯性力偶矩、转子质量等参数,得出某转子系统的动平衡精度为G 40 G40G40。文中详细解析了公式原理与参数单位转换要点,并附完整ISO 1940动平衡等级参考表,为工程师提供从理论到实践的完整解决方案。研究结果表明,该方法可有效量化旋转机械的平衡精度,适用于风机、泵类等中低速设备的设计与调试,对提升设备运行

weixin_46153372的博客 920

Python小白教学系列|循环语句 (for | while 及 break/continue/exit 的运用)

一、for循环语句 1)for 语句的打印功能 name={'孙行者','行者孙','者行孙'} for i in name : print (i) 效果图: 2)for循环功能 格式 for i in range(起始数,结束数) : #冒号记住 示例:求100以内的偶数和 #100以内的偶数和 sum=0 for i in range(2,101,2): #第一个2为起始...

李笑男的博客 772

华为MetaERP PTP采购到应付全流程解析

摘要:本文系统解析华为MetaERP中的PTP(采购到应付)全流程管理方案,涵盖从采购申请到付款执行的完整业务流程。文章详细分解了PR、PO、GR、IV、AP等关键环节的财务核算规则,并提供了预算校验、库存更新等Python代码示例。同时阐述了IT落地架构设计,包括会计引擎配置、系统集成方案及银企直连支付接口实现。该方案通过三单匹配自动化和智能会计引擎,将处理效率提升10倍(200笔/人天→2000笔/人天),实现98%的自动化率,为集团企业提供了高效的数字化财务管理样板。文中所有技术方案均需根据实际场景调

金牌架构师 1741

小程序设计中的区块链应用:数字藏品实现

本文旨在为开发者提供在小程序中实现区块链数字藏品功能的完整技术方案。区块链与数字藏品的基础概念智能合约的设计与实现小程序与区块链的交互方式数字藏品的完整实现流程文章将从基础概念入手,逐步深入到技术实现层面,最后通过完整项目案例展示数字藏品在小程序中的实现方式。每个技术点都会配合代码示例和架构图进行说明。区块链:一种分布式数据库技术,通过加密算法保证数据不可篡改数字藏品:基于区块链技术的数字资产,具有唯一性和可验证性NFT。

小程序开发 1350

exit的用法python_python 中exit,sys.exit,os._exit用法

exitexit() 可以退出某个程序,余下语句不执行,而其中的数字参数则用来表示程序是否是碰到错误而中断。exit(1) 表示程序错误退出exit(0) 表示程序正常退出test.py:#!/usr/bin/env python# coding=utf-8def test():print 'start test'#exit(0)print 'end test'def test1():print ...

weixin_31080559的博客 1044

AI大模型探索之路-训练篇3:大语言模型全景解读

大规模语言模型(Large Language Models,LLM),也称大语言模型或大型语言模型,是一种由包含数百亿以上参数的深度神经网络构建的语言模型,通常使用自监督学习方法通过大量无标注文本进行训练。

寻道AI,探索AI无限可能! 6270

python之for循环及break、exit、continue语句

for循环使用的语法: for 变量 in range(num): 循环需要执行的代码 else: 全部循环结束后需要执行的代码 range():内置python函数 range(start,stop):start~stop-1 range(stop):0~stop-1 range(start,stop,step):start~stop step:为步长 """ # 求1~1...

qq_41871875的博客 542

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python中exit的作用_python中exit()的用法

原博文2019-07-02 06:14 −####偶然看到人家写的脚本中使用了exit(0)和exit(1),就资料了一番,总结如下: 1. sys.exit(n) 退出程序引发SystemExit异常,可以捕获异常执行些清理工作。n默认值为0,表示正常退出,其他都是非正常退出。还可以sys.exit(“sorry, goodbye!”...020046相关推荐2019-12-19 00:06...

weixin_39691055的博客 1921

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python中exit()函数的用法_python中exit()的用法

最近在学习的时候用到exit(),发现对它的用法还不熟悉,通过查阅网上的资料,对exit()的用法做一个简单的整理。1、sys.exit(n) 退出程序引发SystemExit异常,可以捕获异常执行些清理工作。n默认值为0,表示正常退出,其他都是非正常退出。还可以 sys.exit(“sorry, goodbye!”); 一般主程序中使用此退出。exit(0) 有什么功能?在很多类型的操作系统里,...

weixin_34061587的博客 8160

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python exit错误_python exit出错原因整理

Python程序有两种退出方式: os._exit() 和 sys.exit()。我查了一下这两种方式的区别。os._exit() 会直接将python程序终止,之后的所有代码都不会执行。sys.exit() 会抛出一个异常: SystemExit,如果这个异常没有被捕获,那么python解释器将会退出。如果有捕获该异常的代码,那么这些代码还是会执行。例如import ostry:os._exit...

weixin_35683330的博客 1672

python100个常用语句_python中一些常见的语句

哈喽,大家好呀昨天我们学习了python中的标识符、数据类型、类型转换今天让我们来学习在python中一些常见的语句吧1.if语句if 要判断的条件:条件成立时要做的事elif 要判断的条件:条件成立时要做的事else:以上所有条件都不成立时要做的事if语句中可以添加的逻辑判断符:'=='等于'>'大于'>='大于等于'<='小于等于''!='不等于and条件一和条件二两个条件同...

weixin_33643727的博客 2476

python exit函数_Python __exit__,__enter__函数with语句的组合应用

__exit__,__enter__函数with语句的组合应用by:授客 QQ:1033553122简介设计对象类时,我们可以为对象类新增两个方法,一个是__enter(self)__,一个是__exit__(self, exc_type, exc_val, exc_tb)。__enter(self)__负责返回一个值,该返回值将赋值给as子句后面的var_name,通常返回对象自己,即“self...

weixin_39991222的博客 484

pythonflag=false_python学习:跳出while循环的用法 exit_flag = False while not exit_flag:

python学习:跳出while循环的用法 exit_flag = False while not exit_flag:2019年12月01日阅读数:9这篇文章主要向大家介绍python学习:跳出while循环的用法 exit_flag = False while not exit_flag:,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。三级菜单:此处不足 没有考虑是否在d...

weixin_39945810的博客 2122

exit在python中是什么意思_Python中exit()和sys.exit()之间的区别

在Python中,有两个类似命名的函数, exit()和sys.exit() 。 有什么区别,什么时候应该使用一个而不是另一个?#1楼如果我在代码中使用exit()并在shell中运行它,它会显示一条消息,询问我是否要终止该程序。 这真的令人不安。 看这里但在这种情况下, sys.exit()更好。 它会关闭程序并且不会创建任何对话框。#2楼exit是交互式shell的助手 - sys.exit旨...

weixin_39611510的博客 1773
上一篇: Python学习系列之pass语句
下一篇: Python学习系列之错误和异常
answer3lin
博客等级 码龄11年 138粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值