我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中计时,看这一篇就够了

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中计时,看这一篇就够了

计时对于了解程序的性能是很关键的部分。

本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器。

一、python2和python3的通用计时方法
由于python2和3里面的计时函数是不一样的,建议使用timeit模块中的timeit.default_timer()

由timeit.default_timer()的官方文档可知,计时时间精度和平台以及使用的函数有关:

"Define a default timer, in a platform-specific manner. On Windows, time.clock() has microsecond granularity, but time.time()’s granularity is 1/60th of a second. On Unix, time.clock() has 1/100th of a second granularity, and time.time() is much more precise. On either platform, default_timer() measures wall clock time, not the CPU time. This means that other processes running on the same computer may interfere with the timing."

翻译过来就是,

“定义在默认的计时器中,针对不同平台采用不同方式。在Windows上,time.clock()具有微秒精度,但是time.time()精度是1/60s。在Unix上,time.clock()有1/100s精度,而且time.time()精度远远更高。在另外的平台上,default_timer()测量的是墙上时钟时间,不是CPU时间。这意味着同一计算机的其他进程可能影响计时。”

具体区别可以查看python2和3中timeit的实现:

python2中:

if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time
python3中:

default_timer = time.perf_counter
再由time.clock()的官方文档可以看出:

"Deprecated since version 3.3: The behaviour of this function depends on the platform: use perf_counter() or process_time() instead, depending on your requirements, to have a well defined behaviour."

翻译过来就是:

“python3.3版本后time.clock()就过时了:这个函数的行为受平台影响,用time.perf_counter()”或者time.process_time()代替来得到一个定义更好的行为,具体取决于你的需求。”

更多详细信息请看官方文档中的time.get_clock_info()

二、方便使用的计时装饰器
这一部分把计时函数写成python的装饰器形式,这样使用的时候只要在函数的定义前面加上“@装饰器名称”即可。

具体实现和测试代码如下,参考了《Fluent Python》7.7节的相关内容,并参考本文第一部分改成了Python2和Python3通用的版本。

import time, timeit
 
def clock(func):
    def clocked(*args):
        t0 = timeit.default_timer()
        result = func(*args)
        elapsed = timeit.default_timer() - t0
        name = func.__name__
        arg_str = ', '.join(repr(arg) for arg in args)
        print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, arg_str, result))
        return result
    return clocked
 
@clock
def run(seconds):
    time.sleep(seconds)
    return time
 
if __name__ == '__main__':
   run(1)
其中的run函数只是为了测试,可以换成其他你需要的函数。只要在前面加上@clock就可以了。
--------------------- 
作者:FlyingPie 
来源:CSDN 
原文:https://blog.csdn.net/bobauditore/article/details/79377679?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中计时,看这一篇就够了

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中计时,看这一篇就够了

计时对于了解程序的性能是很关键的部分。本文讨论了Python 2和python 3中计时方法,并完成了一个通用的计时装饰器。一、python2和python3的通用计时方法由于python2和3里面的计时函数是不一样的,建议使用timeit
2023-01-31

Redis是什么?看这一篇就够了

本文由葡萄城技术团队编撰并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。引言在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用,原因是因为那时候Web站点基本上访问和并发不高、交互也较少。而在后来
Redis是什么?看这一篇就够了
2020-08-08

python操作Excel神器openpyxl看这一篇就够了

Python使用openpyxl读写excel文件这是一个第三方库,可以处理xlsx格式的Excel文件,下面这篇文章主要给大家介绍了关于python操作Excel神器openpyxl的相关资料,需要的朋友可以参考下
2023-05-14

Docker Volume的用法看这一篇就够了

Docker卷是一种持久存储机制,允许容器访问主机或容器中的数据。有绑定卷(连接主机目录)和命名卷(独立文件系统)两种类型。使用卷的优点包括数据持久性、共享和灵活性。要创建卷,使用命令"dockervolumecreate<卷名称>",要附加到容器,使用命令"dockerrun-v<卷名称>:<容器路径><镜像名称>"。最佳实践包括优先使用命名卷,避免在同一卷中存储重要和临时数据,并定期清理不需要的卷。
Docker Volume的用法看这一篇就够了
2024-04-02

Python爬虫入门这一篇就够了

何谓爬虫所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本。万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息。爬虫三要素抓取分析存储基础的抓取操作1、urllib在Python2.x中我们
2023-01-31

Spring入门这一篇就够了

前言前面已经学习了Struts2和Hibernate框架了。接下来学习的是Spring框架…本博文主要是引入Spring框架…Spring介绍Spring诞生:创建Spring的目的就是用来替代更加重量级的的企业级Java技术简化Java的
2023-06-02

Java迭代器详解,看这一篇就够了

文章目录 🚩Java 迭代器详解📚迭代器的定义📒认识Iterator✏️类结构图✒️Iterable接口🖍️Iterator接口📃Iterat
2023-08-19

软考那些事儿看这一篇就够了!

  近几年来,各行各业的职业资质考试持续发热,其中,软考的报名人数更是一马当先逐年暴增。说起软考证书,大概还有很多朋友都不大认识,甚至还有这样的疑问:为什么这么多人考软考?软考是什么?今天小希就为大家详细介绍下“软考”,一起来看看吧~  软考的前世今生  计算机软件资格考试(即“软考
软考那些事儿看这一篇就够了!
2024-04-19

Git【入门】这一篇就够了

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。除了项目,你可以对任何类型的文件进行版本控制。采用版本控制系统(VCS)是个明智的选择。 有了它就可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时
2023-06-04

Mac zsh: command not found: pyinstaller。[看这一篇就够了]

文章目录 一、问题总结与解决方法。1) pyinstaller版本问题2) 安装后仍然显示command not found2.1) macOS Catalina(10.15) 之前系统。2.2) macOS Catalina(10
2023-08-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录