Python上下文管理器
2015-06-22 15:44
746 查看
上下文管理器(context manager)是Python2.5开始支持的一种语法,用于处理指 定代码块进入和退出时的操作。一般使用with语法,也可以直接调用相应的方法。
with语句
with语句是用来简化“try/finally”语句的,通常用于处理共享资源的获取和
释放,比如文件、数据库和线程资源。它的用法如下:
其相当于进行了如下操作:
例子如下:
也可利用@contextmanager装饰器改写如下:
with语句
with语句是用来简化“try/finally”语句的,通常用于处理共享资源的获取和
释放,比如文件、数据库和线程资源。它的用法如下:
with VAR = EXPR: BLOCK
其相当于进行了如下操作:
VAR = EXPR VAR.__enter__() try: BLOCK finally: VAR.__exit__()
例子如下:
import time class 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: 0.933553934097
也可利用@contextmanager装饰器改写如下:
from contextlib import contextmanager import time @contextmanager def 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: 0.947228908539
# 其中yield之前的所有代码都类似于__enter__方法的内容。而yield之后的所有 # 代码类似__exit__方法的内容。
相关文章推荐
- Python描述器
- python爬虫
- Python生成器
- ZH奶酪:【Python】random模块
- python学习-subprocess模块
- python中的类,对象,方法,属性等介绍
- Python变量、运算符与表达式
- alex教学视频--购物表
- python常用模块
- python中if __name__ == '__main__':
- Python 中的方法、静态方法(static method)和类方法(class method)
- Python学习 之 switch语句
- Python编码规范
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
- Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
- Python lambda匿名函数
- Python学习 之 匿名函数
- 说说Python的装饰器模式与面向切面编程
- python字符串前缀 u和r的区别
- 零基础项目制学习python(二)