python-创建一个秒表计时器

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值