问题

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

解决方案

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

使用python写一个倒计时_Python 实现一个计时器相关推荐

  1. python创建数字列表_Python 生成一个从0到n个数字的列表4种方法小结

    Python 生成一个从0到n个数字的列表4种方法小结 我就废话不多说了,直接上代码吧! 第一种 def test1(): l = [] for i in range(1000): l = l + [ ...

  2. python定义一个空数组_python数组 1_python 数组最后一个元素_python定义一个空数组 - 云+社区 - 腾讯云...

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 感悟: 1.python列表操作里不允许变量类型的指针2.case1类似于冒泡排 ...

  3. python 定义函数方法_Python定义一个函数的方法

    Python函数的定义 定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具.定义函数需要用 def 关键字实现,具体的语法格式如下: def 函数名(形参列表): //由零条到多条可执 ...

  4. python大作业数独_python做一个数独小游戏

    最近看了下python的一些知识,在这里记载一下. 1.首先是安装,在官网下载最新的版本3.6,安装的时候要注意在下面勾选上ADD TO PATH,安装的时候会自动写入到环境变量里面,如果没有勾选,可 ...

  5. python怎么定义一个函数_Python定义一个函数的方法

    Python函数的定义 定义函数,也就是创建一个函数,可以理解为创建一个具有某些用途的工具.定义函数需要用 def 关键字实现,具体的语法格式如下: def 函数名(形参列表): //由零条到多条可执 ...

  6. python写了代码_Python写代码的用法建议

    1.Mutable and immutable types Python有两种内置或用户定义的类型 可变类型是允许就地修改内容的类型.典型的可变列表是列表和词典:所有列表都有变异方法,如 list.a ...

  7. python写推箱子_python写的推箱子小游戏

    原标题:python写的推箱子小游戏 导语 Python 功能强大,可以写爬虫.服务器.数据分析.AI--当然,也可以写游戏. 用python写了个推箱子小游戏,在这里分享给大家,让我们愉快地开始吧~ ...

  8. python写安卓游戏_python写lol游戏脚本(用python开发安卓脚本)

    python写lol游戏脚本 俾格米人和搅拌机的引擎. python-ogre和panda3d是用c/c编写的,但只提供了一个python接口. 你好,蟒蛇可以在Android上工作. 因为你可以在A ...

  9. python时间模块倒计时_Python时间模块

    python时间模块倒计时 In this tutorial, we will learn about the Python time module. Python Variable is discu ...

最新文章

  1. 谷歌:朝鲜国家黑客第二次攻击安全研究员
  2. pyspark:basic_operating_1
  3. EXCEL调用REFPROP方法
  4. FishC笔记—01 讲:我和 Python 第一次亲密接触
  5. excel查标准正态分布_利用Excel的NORMSDIST计算正态分布函数表1
  6. awgn matlab,Matlab实现加性高斯白噪声信道(AWGN)下的digital调制格式识别分类
  7. python把汉字变成拼音英文_Python把汉字转换成拼音
  8. TCP/IP(3)——IPV6
  9. 【流媒体协议】图解 FLV 协议 快速入门
  10. 我们需要一个什么样的公司---读《重新定义公司》有感
  11. win10 更新Node JS和npm
  12. Git 使用过程中遇到的问题以及解决办法
  13. 【踩坑】Linux java中ftp下载文件,解压文件损坏,以及图片下载打开只显示下载路径的问题
  14. 博弈游戏·Nim游戏·二
  15. SQL Server 替换越南语(越南文)音标SQL脚本
  16. Transformer家族5 -- 推理加速(Faster-Transformer、TurboTransformers)
  17. 第一讲:个人建站云服务器选择
  18. 2022-08-04 乐理知识(三) 如何打拍子——V字打拍法,三角形打拍法,常见节奏型:二八,四十六,前十六后八,前八后十六,前后附点,大附点,大小切分,八三拍的节奏型及其变体
  19. 栈结构之链栈详解(C语言版)
  20. 职称计算机 只做模拟题,2017职称计算机考试Dreamweaver模拟练习题

热门文章

  1. VC中的一些常用方法(20条)
  2. 15个优雅的Python编程技巧,掌握后瞬间玩转Python
  3. 窗函数性能分析——MATLAB
  4. python爬取商城数据_Python爬取新版CRMEB小程序商城后台订单数据,保存为excel
  5. P2386 放苹果 方法一
  6. Python批量替换目录下文件后缀脚本实例
  7. 转学伯克利计算机科学,转学前往伯克利大学 你够格吗?
  8. mysql 毫秒比较_MYSQL的毫秒级时间比较问题
  9. CAN总线技术 | CAN脱颖而出的“秘密”
  10. Qt文档阅读笔记-QNetworkProxy::ProxyType解析(Qt设置Fiddler代理)