13.1 如何记录各项任务所华为的时间
- time模块中包含了各种与计时相关的函数,但是在这些函数智商再构建接口来模拟秒表会更有用。
import time
class Timer:
def __init__(self,func=time.perf_counter):
self.elapsed =0.0
self._func = func
self._start = None
def start(self):
if self._start is not None:
raise RuntimeError("already started")
self._start = self._func()
def stop(self):
if self._start is None:
raise RuntimeError("Not started")
end = self._func()
self.elapsed +=end -self._start
self._start = None
def reset(self):
self.elapsed =0.0
@property
def running(self):
return self._start is not None
def __enter__(self):
self.start()
return self
def __exit__(self, *args):
self.stop()
- 上述类定义了一个定时器,可以根据用不的需要启动,停止和重置。Timer类将总的华为时间记录在elapsed属性中。以下展示如何使用这个类
def countdown(n):
while n >0:
n -= 1
t = Timer()
t.start()
countdown(1000000)
t.stop()
print(t.elapsed)
with t:
countdown(1000000)
print(t.elapsed)
with Timer() as r2:
countdown(1000000)
print(r2.elapsed)
~/ning-dashboard/test > python3 timetest.py 34s
0.058363313
0.11943391900000001
0.059915157
网友评论