Python 实现一个计时器

 更新时间:2020年07月28日 14:50:10   作者:David Beazley  
这篇文章主要介绍了Python 实现一个计时器的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

问题

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

解决方案

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 计时器的资料请关注脚本之家其它相关文章!

相关文章

  • 解决pandas报错'DataFrame' object has no attribute 'as_matrix'问题

    解决pandas报错'DataFrame' object has no

    这篇文章主要介绍了解决pandas报错'DataFrame' object has no attribute 'as_matrix'问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  •  Python 匿名函数lambda 详情

     Python 匿名函数lambda 详情

    这篇文章主要介绍了 Python 匿名函数lambda,​​lambda​​​  函数返回函数本身而不是将其赋值给一个变量名。所以它也被称为匿名函数,下文更多相关内容需要的小伙伴可以参考一下
    2022-03-03
  • Python编写春联的示例代码(支持行书隶书楷书)

    Python编写春联的示例代码(支持行书隶书楷书)

    这篇文章主要介绍了如何通过Python代码编写春联,其中春联字体支持行书隶书楷书。文中的示例代码讲解详细,感兴趣的小伙伴可以动手试一试
    2022-01-01
  • Python中逗号转为空格的三种方法

    Python中逗号转为空格的三种方法

    本文介绍了Python中将逗号转换为空格的三种方法,包含使用replace函数、使用split函数、使用正则表达式,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python Pygame实战之实现经营类游戏梦想小镇代码版

    Python Pygame实战之实现经营类游戏梦想小镇代码版

    作为一名模拟经营类游戏的发烧友,各种农场类、医院类、铁路类的游戏玩儿了很多年。今天用代码给大家打造一款梦想小镇游戏,希望大家喜欢啦
    2022-12-12
  • Python字符串大小写转换拼接删除空白

    Python字符串大小写转换拼接删除空白

    这篇文章主要介绍了Python字符串大小写转换拼接删除空白的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Python基于opencv实现的人脸识别(适合初学者)

    Python基于opencv实现的人脸识别(适合初学者)

    OpenCV是一个基于BSD许可开源发行的跨平台计算机视觉库,下面这篇文章主要给大家介绍了关于Python基于opencv实现的人脸识别,文中通过实例代码介绍的非常详细,本文的教程非常适合初学者,需要的朋友可以参考下
    2022-03-03
  • 解决Python字典查找报Keyerror的问题

    解决Python字典查找报Keyerror的问题

    这篇文章主要介绍了解决Python字典查找报Keyerror的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python基于TensorFlow接口实现深度学习神经网络回归

    Python基于TensorFlow接口实现深度学习神经网络回归

    这篇文章主要为大家详细介绍了如何基于Python语言中TensorFlow的tf.estimator接口,实现深度学习神经网络回归的具体方法,感兴趣的可以了解一下
    2023-02-02
  • Python 如何查找特定类型文件

    Python 如何查找特定类型文件

    这篇文章主要介绍了Python 如何定位特定类型文件,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08

最新评论