zoukankan      html  css  js  c++  java
  • Python上下文管理器

    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于处理指 定代码块进入和退出时的操作。一般使用with语法,也可以直接调用相应的方法。

    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__方法的内容。
  • 相关阅读:
    2020牛客多校第三场 G
    Travel Guide
    jQuery属性选择器中加变量
    css 两大特性:继承性和层叠性
    css 伪元素选择器
    css 伪类选择器
    css属性选择器
    css的高级选择器,后代选择器,子代选择器,并集选择器,交集选择器
    css 引入方式以及css的选择器
    HTML
  • 原文地址:https://www.cnblogs.com/arcticant/p/4593373.html
Copyright © 2011-2022 走看看