python3计算运行时间_性能分析之代码运行时间计算——Python timeit 模块 介绍
通过修饰器实现函数运行时间的计算
在之前介绍Python修饰器的几篇文章中,提到修饰器的一种应用场景——计算并打印代码执行时间,如下 runtime 修饰器:
我们使用 runtime 修饰器,对需要关注执行时间函数进行修饰,如下
遇见 Timeit
Python 内置模块 timeit 模块与 time 模块都可以实现对代码运行时间的计算,但 timeit 模块是专门用来测试代码运行时间的,提供了更多灵活的计算方法,并且相对精度也会更高。
我们先来看一下,同样计算一个函数的运行时间,使用 timeit 如何实现。
不难看出,timeit 还是比较灵活简单的。接下来,我们深入的了解一下 timeit 模块常用的两个函数 。
timeit 函数
创建一个 Timer实例,返回运行 stmt 这段代码 number 遍所用的时间,单位为秒。
语法
参数说明
- stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,也可以接受单个变量,也可以接受函数。传入函数时要把函数申明在当前文件中,然后在 stmt = 'func()' 执行函数,然后使用 setup = 'from main import func'。
- setup:初始化代码或构建环境的导入语句,比如 stmt中使用到的参数、变量,要导入的模块等,多行语句的话,使用分号分隔,同时该语句不计入时间,一般是 from ... import ...。
- timer:计时函数,win32下是time.clock(),linux下是 time.time(),Python的标准库手册推荐在任何系统下都尽量使用 time.clock()。
- number:默认 100000,每一次测量中语句被执行的次数。
示例
执行上述代码,输出结果为:
如果我们只是想计算 com函数里 sum([i 2 for i in rn]) 代码的运行时间,我们可以直接使用 timeit.timeit 方法,上述代码可以调整为:
repeat 函数
创建一个 Timer实例,通过repeat 参数指定重复测试的次数,返回包含每次测试的执行时间的列表,利用这一函数可以很方便得实现多次试验取平均的方法。
语法
参数说明
- stmt:用于传入要测试时间的代码,可以直接接受字符串的表达式,可以接受单个变量或者函数。传入函数时要把函数申明在当前文件中,然后在 stmt = 'func()' 执行函数,然后使用 setup = 'from main import func'。
- setup:初始化代码或构建环境的导入语句,比如 stmt中使用到的参数、变量,要导入的模块等,多行语句的话,使用分号分隔,同时该语句不计入时间,一般是 from ... import ...。
- timer:计时函数,win32下是 time.clock(),linux下是 time.time(),Python的标准库手册推荐在任何系统下都尽量使用 time.clock()。
- repeat:默认3次,测试要重复几次,每次的结果构成列表返回。
- number:默认100000次,每一次测量中语句被执行的次数。
示例
执行上述代码,输出结果为:
python3计算运行时间_性能分析之代码运行时间计算——Python timeit 模块 介绍相关推荐
- 第09章_性能分析工具的使用
第09章_性能分析工具的使用 文章目录 1. 数据库服务器的优化步骤 2. 查看系统性能参数 3. 统计SQL的查询成本:last_query_cost 4.定位执行慢的 SQL:慢查询日志 4.1 ...
- 计算相机投影矩阵(含代码)(Python)
计算相机投影矩阵(含代码)(Python) 前几天处理点云时,需要使用到像片与3D点云的对应关系.在这边找了一圈没有发现直接可用的代码,于是去GitHub试了一下,以下是一个提炼后的矩阵计算代码. 下 ...
- leip与mysql数据库_性能分析方法 - osc_xm8bu282的个人空间 - OSCHINA - 中文开源技术交流社区...
一.性能分析的常用手段 1.空间换时间,利用内存缓存从磁盘上取出的数据,CPU可以直接访问内存,从而比从磁盘读取数据更高的效率. 2.时间换空间,当空间成为瓶颈的时候,切开数据分批次处理,用更少空间完 ...
- python测试代码性能_使用python timeit 模块检测代码性能
使用Python 通常在乎的是它的开发效率,而不是运行性能. 但如果通过很简单的方法可以测试出n种不同的写法之间的性能差异,这个过程本身也是一种乐趣. python 自带了timeit 模块,可以在代 ...
- 由浅入深探究mysql索引结构原理_性能分析与优化_由浅入深探究mysql索引结构原理、性能分析与优化...
由浅入深探究mysql索引结构原理.性能分析与优化 第一部分:基础知识第二部分:MYISAM和INNODB索引结构1, 简单介绍B-tree B+ tree树 2, MyisAM索引结构 3, Ann ...
- Holt-Winters模型原理分析及代码实现(python)
引言 最近实验室老师让我去预测景区内代步车辆的投放量,于是乎,本着"一心一意地输出年富力强的劳动力"这份初心,我就屁颠屁颠地去找资料,然后发现了Holt-Winters模型 , 感 ...
- 雨棚板弹性法计算简图_造价工程师:钢结构工程量计算注意事项
造价工程师:钢结构工程量计算注意事项 一.图纸:根据图纸目录,清理核对图纸数量,检查是否有遗漏. 二.建筑施工图 1. 设计总说明 1.1 建筑面积.结构形式.柱距.跨度.结构布置情况: 1.2 工程 ...
- Python timeit 模块详解(准确测量小段代码的执行时间)
timeit 模块详解 -- 准确测量小段代码的执行时间 timeit 模块提供了测量 Python 小段代码执行时间的方法.它既可以在命令行界面直接使用,也可以通过导入模块进行调用.该模块灵活地避开 ...
- python timeit模块_如何在Python中使用timeit模块?
文 | 菊子皮(转载请注明出处) 关注公众号: AIAS编程有道 环境:Python 3.7,VS Code timeit模块使用 有时候需要测试创建某种变量而花费的时间.有时候需要测试某个函数的运行 ...
- opencv图像清晰度计算_收藏|分析君带你认识Python中的十大图像处理工具
当今世界充满了各种数据,而图像是其中高的重要组成部分.然而,若想其有所应用,我们需要对这些图像进行处理.图像处理是分析和操纵数字图像的过程,旨在提高其质量或从中提取一些信息,然后将其用于某些方面. 图 ...
最新文章
- WEB技术架构的资源链接。
- asp.net MVC的EF与easyui DataGrid数据绑定
- Elasticsearch大文件搜索
- 西交利物浦计算机专业分数线,西交利物浦大学2018年各省及各专业录取分数线及最低录投档线【理科 文科】...
- vba交付图表设计_您是在为交付目的而“设计”吗?
- python numpy矩阵索引_python – Numpy中的矩阵索引
- Oracle 11g 完全卸载
- ARP协议具体解释之Gratuitous ARP(免费ARP)
- 戏说前端 JavaScript 之『防抖节流』基础知识
- 洛谷 P2804 神秘数字
- clang: error: unknown argument: ‘-fpch-deps‘
- 矩阵变量的矩阵值函数微分公式 (原创)
- 【网络是怎样连接的】—— TCP/IP 传输数据
- [内核内存] [arm64] 内存初始化4---bootm_init
- 一秒实现免费下载百度文库资料的方法
- 无线城域网-无线广域网
- 使用gsds绘制基因结构图_基因结构图的绘制
- 打开.sql文件的方法
- pycharm的安装配置及思维导图
- 广州的11个辖区_广州市下辖11个区,其中GDP总值超过3000亿元的分别有哪些?
热门文章
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_4_方法引用_通过super引用父类的...
- 商业流程中的traversedpath
- VS2013单元测试
- Asp.Net MVC4 Bundle捆绑压缩技术
- Discuz!NT 在线用户功能简介(转)
- DIV+CSS定义及优势
- win7用VMware安装CentOs7搭建Linux环境
- UVa 10491 - Cows and Cars(全概率)
- JAVA作业 17-05-18
- 【BZOJ-13361337】Alie最小圆覆盖 最小圆覆盖(随机增量法)