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
版权声明:本文为博主原创文章,转载请附上博文链接!
Python中计时,看这一篇就够了相关推荐
- Python正则表达式,看这一篇就够了
作者 | 猪哥 来源 | 裸睡的猪(ID: IT--Pig) 大多数编程语言的正则表达式设计都师从Perl,所以语法基本相似,不同的是每种语言都有自己的函数去支持正则,今天我们就来学习 Python中 ...
- Python操作MongoDB看这一篇就够了
MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档.数组及文档数组,非常灵活.在这一节中,我们就来看 ...
- anaconda的安装和使用(管理python环境看这一篇就够了)
anaconda的安装和使用(管理python环境看这一篇就够了) 前言 一.Anaconda是什么? 二.Anaconda安装 三.Anaconda使用教程 四.pycharm使用anaconda创 ...
- python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...
https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...
- python详细安装教程-超详细Python与PyCharm安装教程,看这一篇就够了
原标题:超详细Python与PyCharm安装教程,看这一篇就够了 学习了三天的python, 之前测试一直用课程自带的网页版玩玩, 为了学习 然后就下载了一个python和pycharm 现在分享下 ...
- docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- 如何应对大数据分析工程师面试Spark考察,看这一篇就够了
作者丨斌迪.HappyMint 来源丨大数据与人工智能(ID:ai-big-data) [导读]本篇文章为大家带来spark面试指南,文内会有两种题型,问答题和代码题,题目大部分来自于网络上,有小部分 ...
- 聊聊Java8之后的JDK升级内容(看这一篇就够了)
聊聊Java8之后的JDK升级内容(看这一篇就够了) 背景 从 JDK 8 到 JDK 17 的新特性 JDK8 回顾 JDK9 JDK10 JDK11 JDK12 JDK13 JDK14 JDK15 ...
- api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)
如何轻松打造百亿流量API网关?看这一篇就够了(上) 上篇整体描述了网关的背景,涉及职能.分类.定位环节,本篇进入本文的重点,将会具体谈下百亿级流量API网关的演进过程. 准备好瓜子花生小板凳开始积累 ...
- serviceloader java_【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
最新文章
- 转载:VMware虚拟机时钟不准的问题(linux图形界面投影到windows配置参考)--略有修改...
- response code 404 500
- java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
- java中sort函数comparator的使用_Java Comparator comparingInt()用法及代码示例
- win10系统电脑c盘哪些文件可以删除,c盘可以删除的文件有哪些
- Echarts 折线图最后一个点发光闪烁效果
- Luogu3792 由乃与大母神原型和偶像崇拜
- python分析html文件_如何用Python解析HTML?
- Android音量系统分析
- acm-(dp计数)Educational Codeforces Round 97 (Rated for Div. 2) F. Emotional Fishermen
- Sometimes you will never know the true value of a moment until it becomes a memory
- arn : 无法加载文件 C:\Users\zky\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.
- CSS——网易云音乐首页之榜单区域的实现
- 电量监测程序 c语言,基于单片机的电量检测系统设计方案.doc
- 聂文涛谈糖尿病并发症的成因
- 带你了解「美团、百度和滴滴」的分布式 ID 生成系统
- 满满干货 | 建议收藏,这样做报价表,才是真的完美又专业.
- CE修改植物大战僵尸-关卡基址(小宇特详解)
- 鹅厂一面凉经------也许这就是成长吧!
- CSS ul li:nth-child的详细实例
热门文章
- 2021年“春秋杯”新年欢乐赛--十二宫的挑衅
- Windows 10专业版 64位 版本15063-1703 对应的简体中文语言包(Chinese Language packs)
- 使用容器方式进行编译的经验和技巧小结
- 优思学院|初入职质量管理如何掌握工作内容?
- Android实时模糊
- 211130-Python谱图(Spectogram)分析Demo
- 将人民币中的阿拉伯数字转换为大写
- react native 震动 Vibration 使用详解
- 计算机网络技术和机电一体化,机电一体化技术和计算机网络技术那个好?
- 新交互英语外挂全自己主动版