这几天在看深入理解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)
网友评论