python写一个计时器_Python 实现一个计时器

本文介绍如何在Python中使用`time`模块创建一个计时器类`Timer`,该类允许用户启动、停止和重置计时器,以测量程序执行任务的耗时。通过`__enter__`和`__exit__`方法实现了上下文管理器功能,方便在with语句中使用。示例展示了如何使用`Timer`进行计时,包括显式调用和作为上下文管理器的方式。并讨论了使用`time.perf_counter()`或`time.process_time()`来获取不同类型的计时信息。
摘要由CSDN通过智能技术生成

问题

你想记录程序执行多个任务所花费的时间

解决方案

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()

这个类定义了一个可以被用户根据需要启动、停止和重置的计时器。 它会在 elapsed属性中记录整个消耗时间。 下面是一个例子来演示怎样使用它:

def countdown(n):

while n > 0:

n -= 1

# Use 1: Explicit start/stop

t = Timer()

t.start()

countdown(1000000)

t.stop()

print(t.elapsed)

# Use 2: As a context manager

with t:

countdown(1000000)

print(t.elapsed)

with Timer() as t2:

countdown(1000000)

print(t2.elapsed)

讨论

本节提供了一个简单而实用的类来实现时间记录以及耗时计算。 同时也是对使用with语句以及上下文管理器协议的一个很好的演示。

在计时中要考虑一个底层的时间函数问题。一般来说, 使用 time.time()或 time.clock()计算的时间精度因操作系统的不同会有所不同。 而使用time.perf_counter()函数可以确保使用系统上面最精确的计时器。

上述代码中由 Timer 类记录的时间是钟表时间,并包含了所有休眠时间。 如果你只想计算该进程所花费的CPU时间,应该使用 time.process_time() 来代替:

t = Timer(time.process_time)

with t:

countdown(1000000)

print(t.elapsed)

time.perf_counter() 和time.process_time()都会返回小数形式的秒数时间。 实际的时间值没有任何意义,为了得到有意义的结果,你得执行两次函数然后计算它们的差值。

以上就是Python 实现一个计时器的详细内容,更多关于Python 计时器的资料请关注易采站长站其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值