广告
返回顶部
首页 > 资讯 > 后端开发 > Python >深入理解python中的atexit模块
  • 341
分享到

深入理解python中的atexit模块

模块pythonatexit 2022-06-04 18:06:32 341人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

atexit 模块介绍 python atexit 模块定义了一个 reGISter 函数,用于在 Python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作

atexit 模块介绍

python atexit 模块定义了一个 reGISter 函数,用于在 Python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作。 atexit 按注册的相反顺序执行这些函数; 例如注册A、B、C,在解释器终止时按顺序C,B,A运行。

Note:如果程序是非正常crash,或者通过os._exit()退出,注册的退出函数将不会被调用。

官方文档:https://docs.python.org/3.5/library/atexit.html

注册 退出函数


atexit.register(func, *args, **kargs)

将func作为要在终止时执行的函数。任何要传递给func的可选参数必须作为参数传递给register() 。可以多次注册相同的函数和参数。

当程序退出的时候,按先进后出的顺序调用注册的函数。如果退出函数在执行过程中抛出了异常,atexit会打印异常的信息,并继续执行下一下回调,直到所有退出函数执行完毕,它会重新抛出最后接收到的异常。

示例

通过装饰器的方式:


#!/usr/bin/env python
from atexit import register
def main():
 print('Do something.')
@register
def _atexit():
 print('Done.')
if __name__ == '__main__':
 main()

非装饰器的方式:


#!/usr/bin/env python
from atexit import register
def main():
 #pass
 print('XX')
def Goodbye(name, adjective):
 print('Goodbye, %s, it was %s to meet you.' % (name, adjective))
 
register(goodbye, 'Donny', 'nice')
# or:
# register(goodbye, adjective='nice', name='Donny')
if __name__ == '__main__':
 main()

删除退出函数[一般用不到]


> atexit.unregister(func)
>

从解释器关闭时运行的函数列表中删除func。 调用unregister()后,当解释器关闭时,即使它被注册了多次,func也不会被调用。如果func没有注册过的话,则unregister()什么也不会做。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

--结束END--

本文标题: 深入理解python中的atexit模块

本文链接: https://www.lsjlt.com/news/13642.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 深入理解python中的atexit模块
    atexit 模块介绍 python atexit 模块定义了一个 register 函数,用于在 python 解释器中注册一个退出函数,这个函数在解释器正常终止时自动执行,一般用来做一些资源清理的操作...
    99+
    2022-06-04
    模块 python atexit
  • 深入理解python中的select模块
    简介 Python中的select模块专注于I/O多路复用,提供了select poll epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kq...
    99+
    2022-06-04
    模块 python select
  • 深入解析Python中的urllib2模块
    Python 标准库中有很多实用的工具类,但是在具体使用时,标准库文档上对使用细节描述的并不清楚,比如 urllib2 这个 HTTP 客户端库。这里总结了一些 urllib2 的使用细节。 Prox...
    99+
    2022-06-04
    模块 Python
  • python中jieba模块的深入了解
    目录一、前言        二、模块的安装三、jieba模块具体讲解3.1分词模式3.2cut()、lcut()3.2.1cut(s...
    99+
    2022-11-11
  • 深入理解Node中的buffer模块
    在Node、ES2015出现之前,前端工程师只需要进行一些简单的字符串或DOM操作就可以满足业务需要,所以对二进制数据是比较陌生。node出现以后,前端面对的技术场景发生了变化,可以深入到网络传输、文件操作...
    99+
    2022-06-04
    模块 Node buffer
  • 深入理解Python3中的http.client模块
    http 模块简介 Python3 中的 http 包中含有几个用来开发 HTTP 协议的模块。 http.client 是一个底层的 HTTP 协议客户端,被更高层的 urllib.request ...
    99+
    2022-06-04
    模块 http client
  • 深入理解Node.js的HTTP模块
    前言 我们知道传统的HTPP服务器会由Aphche、Nginx、IIS之类的软件来担任,但是nodejs并不需要,nodejs提供了http模块,自身就可以用来构建服务器,而且http模块是由C++实现的,...
    99+
    2022-06-04
    模块 Node js
  • 深入理解Nodejs Global 模块
    浏览器上有自己的全局对象 window,同理, nodejs 下也有自己的全局对象 global,并且在各个模块下 都可以直接访问 global 对象。 在 nodejs 中,除了可以直接使用 V8 Ja...
    99+
    2022-06-04
    模块 Nodejs Global
  • 深入理解node.js之path模块
    node之path模块 //引用该模块 var path = require("path"); 1、路径解析,得到规范化的路径格式 //对window系统,目录分隔为'', 对于UNIX系统,分隔...
    99+
    2022-06-04
    模块 node js
  • 深入了解Python的类与模块化
    目录学习目标1. 面向对象编程:类1.1 面向对象编程的基本概念1.2 自定义类1.3 再谈继承2. 模块2.1 导入模块2.2 导入Python标准模块2.3 单独导入模块中所需对...
    99+
    2022-11-12
  • 深入解析Python编程中JSON模块的使用
    JSON编码支持的基本数据类型为 None , bool , int , float 和 str , 以及包含这些类型数据的lists,tuples和dictionaries。 对于dictionaries...
    99+
    2022-06-04
    模块 Python JSON
  • python爬虫之request模块深入讲解
    目录一、概述二、安装和基本步骤使用三、http知识复习四、request请求模块的方法使用五,params和payload参数使用说明总结一、概述 在后期渗透测试中,经常会遇到需要向...
    99+
    2022-11-13
  • 深入理解Commonjs规范及Node模块实现
    前面的话 Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性。本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于javasc...
    99+
    2022-06-04
    模块 Commonjs Node
  • Python关于时间序列calendar模块的深入讲解
    大家好,在之前的文章中详细介绍了time和datetime模块的使用。这两个模块更多的是用于处理时间和日期相关的问题。 本文介绍的是第三个模块calendar,则主要是用于解决日历方...
    99+
    2022-11-12
  • 深入理解Python中的__builti
    0.说明        这里的说明主要是以Python 2.7为例,因为在Python 3+中,__builtin__模块被命名为builtins,下面主要是探讨Python 2.x中__builtin__模块和__builtins__模块...
    99+
    2023-01-31
    Python __builti
  • 深入理解python中的ThreadLocal
    ThreadLocal在threading模块中,可以见得它是为我们的线程服务的。 它的主要作用是存储当前线程的变量,各个线程之间的变量名是可以相同的,但是线程之间的变量是隔离的,也...
    99+
    2023-03-08
    python ThreadLocal
  • 深入聊聊Node中的File模块
    在聊 Stream/Buffer 的时候,我们已经开始使用require("fs")引入文件模块做一些操作了文件模块是对底层文件操作的封装,例如文件读写/打开关闭/删除添加等等文件模块最大的特点就是所有的方法都提供的同步...
    99+
    2023-05-14
    Node.js 前端
  • python中模块导入模式详解
    目录模块导入1.1 import导入模块1.2 from 模块名 import 导入模板的方法1.3 as 关键字OS模块操作文件OS模块的作用模块的制作、发布、安装3.1 模块制作...
    99+
    2022-11-11
  • Node.js 源码阅读深入理解cjs模块系统
    目录前言源码阅读内置模块用户模块总结前言 相信大家都知道如何在 Node.js 中加载一个模块: const fs = require('fs'); const express = ...
    99+
    2022-11-13
  • JAVA中反射机制和模块化的深入讲解
    目录一.类加载1.1类加载描述1.2类的加载1.3类的连接1.4类的初始化        1.4.1类...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作