python上下文管理器,实现代码块执行时间管理器

这几天在看深入理解python特性,看到with上下文管理器部分,里面有提到自己实现代码块执行时间管理器,自己用装饰器和类的方式分别实现了下,代码如下:

import time
from contextlib import contextmanager

##### 用类的方式实现
class timeManager:
    def __init__(self):
        self.start=None
    
   def __enter__(self):
        self.start=time.time()
        return self

    def __exit__(self,exc_type,exc_val,exc_tb):
        print('代码执行时间:',time.time-start,' s')

##### 用装饰器的方式实现
@contextmanager
def timeManage():
    start=time.time()
    yield()
    print('代码执行时间:',time.time-start,' s')

############ 测试 #########
if __name__ == '__main__':
    with timeManager() as t:
        for i in range(1,100):time.sleep(0.01)

    with timeManage as tm:
        for i in range(1,100):time.sleep(0.01)

你可能感兴趣的:(python上下文管理器,实现代码块执行时间管理器)