使用 timeit 模块
来源:互联网 发布:网络推广学校 编辑:程序博客网 时间:2024/05/20 23:33
关于 Python 代码优化你需要知道的最重要问题是,决不要自己编写计时函数。
为一个很短的代码计时都很复杂。处理器有多少时间用于运行这个代码?有什么在后台运行吗?每个现代计算机都在后台运行持续或者间歇的程序。小小的疏忽可能破坏你的百年大计,后台服务偶尔被 “唤醒” 在最后千分之一秒做一些像查收信件,连接计时通信服务器,检查应用程序更新,扫描病毒,查看是否有磁盘被插入光驱之类很有意义的事。在开始计时测试之前,把一切都关掉,断开网络的连接。再次确定一切都关上后关掉那些不断查看网络是否恢复的服务等等。
接下来是计时框架本身引入的变化因素。Python 解释器是否缓存了方法名的查找?是否缓存代码块的编译结果?正则表达式呢? 你的代码重复运行时有副作用吗?不要忘记,你的工作结果将以比秒更小的单位呈现,你的计时框架中的小错误将会带来不可挽回的结果扭曲。
Python 社区有句俗语:“Python 自己带着电池。” 别自己写计时框架。Python 2.3 具备一个叫做 timeit 的完美计时工具。
例 18.2. timeit 介绍
如果您还没有下载本书附带的样例程序, 可以 下载本程序和其他样例程序。
>>> import timeit>>> t = timeit.Timer("soundex.soundex('Pilgrim')",... "import soundex") >>> t.timeit() 8.21683733547>>> t.repeat(3, 2000000) [16.48319309109, 16.46128984923, 16.44203948912]
注意 repeat() 返回一个时间列表。由于 Python 计时器使用的处理器时间的微小变化 (或者那些你没办法根除的可恶的后台进程),这些时间中几乎不可能出现重复。你的第一想法也许是说:“让我们求平均值获得真实的数据。”
事实上,那几乎是确定错误的。你的代码或者 Python 解释器的变化可能缩短耗时,那些没办法去除的可恶后台进程或者其他 Python 解释器以外的因素也许令耗时延长。如果计时结果之间的差异超过百分之几,太多的可变因素使你没法相信结果,如果不是这样则可以取最小值而丢弃其他结果。
Python 有一个方便的 min 函数返回输入列表中的最小值:
>>> min(t.repeat(3, 1000000))8.22203948912
- 使用 timeit 模块
- 使用 timeit 模块
- timeit 模块
- timeit使用
- Python timeit模块
- python--timeit模块
- python中timeit模块用法
- timeit 模块: 测试时间性能
- 13、Python time&timeit 模块
- 笔记:timeit使用
- python timeit模块的使用(附加append、insert、extend用法)
- timeit
- Python基础——timeit模块
- 014讲模块time,timeit详解
- Python的计时timeit模块概述
- python的计时函数——timeit模块
- python中计时工具timeit模块的基本用法
- python中计时工具timeit模块的基本用法
- CloudStack 4.4+KVM之KVM计算节点安装
- JavaScript Core -- 理解闭包
- 惯性导航之认识四元数(四)
- UML——包图
- 15.Swift 录制音频
- 使用 timeit 模块
- UML——对象图
- Bouguet极线校正进一步理解
- NYOJ 888 取石子(九)(反尼姆博奕)
- 56Merge Intervals
- 双目定标与双目校正
- yunwen_english_missing_point
- 机房收费系统—结账
- 上拉电阻