python如何使用ContextLib
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,小编给大家分享一下python如何使用ContextLib,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!上下文管理库(Co
千家信息网最后更新 2024年11月24日python如何使用ContextLib
小编给大家分享一下python如何使用ContextLib,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
上下文管理库(ContextLib)
contextlib模块包含了与上下文管理器和with声明相关的工具。通常如果你想写一个上下文管理器,则你需要定义一个类包含enter方法以及exit方法,例如:
import timeclass demo: def __init__(self, label): self.label = label def __enter__(self): self.start = time.time() def __exit__(self, exc_ty, exc_val, exc_tb): end = time.time() print('{}: {}'.format(self.label, end - self.start))
完整的例子在此:
import timeclass demo: def __init__(self, label): self.label = label def __enter__(self): self.start = time.time() def __exit__(self, exc_ty, exc_val, exc_tb): end = time.time() print('{}: {}'.format(self.label, end - self.start))with demo('counting'): n = 10000000 while n > 0: n -= 1# counting: 1.36000013351
上下文管理器被with声明所激活,这个API涉及到两个方法。 enter方法,当执行流进入with代码块时,enter方法将执行。并且它将返回一个可供上下文使用的对象。
当执行流离开with代码块时,exit方法被调用,它将清理被使用的资源。
利用@contextmanager装饰器改写上面那个例子:
from contextlib import contextmanagerimport time@contextmanagerdef demo(label): start = time.time() try: yield finally: end = time.time() print('{}: {}'.format(label, end - start))with demo('counting'): n = 10000000 while n > 0: n -= 1# counting: 1.32399988174
看上面这个例子,函数中yield之前的所有代码都类似于上下文管理器中enter方法的内容。而yield之后的所有代码都如exit方法的内容。如果执行过程中发生了异常,则会在yield语句触发。
以上是"python如何使用ContextLib"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
方法
上下
上下文
管理
代码
内容
例子
篇文章
不怎么
两个
函数
大部分
对象
工具
更多
模块
激活
知识
行业
语句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库em
计算机一级网络技术模拟题
互联网是伪科技吗
戴尔服务器进bios看内存
杭州宝刊网络技术有限公司
网络安全b类
软件开发项目财务评审
空间数据库技术最新发展概况
三国魂一键端修改数据库
美国网络安全 签证好过吗
wincc变量记录数据库时间
软件开发需要哪些内容安卓
ef保存 数据库无记录
人口基础数据库是什么
数据库查询jar包
拓维软件开发
华为服务器配置清单
我的世界服务器快速拆掉公会
如何把台式机变成服务器
数据库前要加the吗
软件开发涉密甲级资质
maven项目改数据库数据
上海现代软件开发价格表格
自己搭建国外的服务器
地形数据库dlg分层
山西华锐阳软件开发
弘博网络技术推广有限公司
网络安全ctf知识竞赛
游戏软件开发的工作特性
网络安全保密教育观后感