python 代码运行时间获取方式详解


Posted in Python onSeptember 18, 2020

我们知道为了提高代码的运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈是电脑运行代码所需要的时间。这里将介绍四种常用的测试代码运行速度的方法。

第一种:使用time模块对代码的运行时间进行统计,代码如下:

import time
class Debug:
  def mainProgram(self):
    start_time = time.time()
    for i in range(100):
      print(i)
    end_time = time.time()
    print(f"the running time is: {end_time - start_time} s")
    

if __name__ == "__main__":
  main = Debug()
  main.mainProgram()

我们采用time 模块给所要测试的代码的前后加上时间戳,一个记为start_time,一个记作end_time,最后代码块的运行时间为end_time-start_time,单位为s(秒)。当然在python中还有许多的记录时间的模块,这里不做过多讨论,均类似于time模块,实现思路上一致,代码实现上大同小异。

第二种:使用IPython的Built-in magic commands,%time,代码如下:

class Debug:
  def mainProgram(self):
    %time for i in range(100): print(i)
    

main = Debug()
main.mainProgram()
"""
Wall time: 1.99 ms
"""

这个类定义是可以去掉的,并不会影响最终的结果,%time 后面加上想要计算时间的代码,然后编译器就会在运行后自动给出所测试代码的运行时间,但是经过测试,%time方法测出的时间并不准确,时间波动范围非常大,这个是很好理解的,因为计算机每时每刻都在处理一些进程,也就是说计算机的运行状态每时每刻都是不同的,所以在不同的时刻测试同一段代码的运行时间也会得到不同的结果。

第三种:用IPython的另一个Built-in magic commands,%timeit,使用方法类似于%time,代码如下:

class Debug:
  def mainProgram(self):
    %timeit for i in range(100): print(i)
    

main = Debug()
main.mainProgram()
"""
8.53 ms ± 452 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
"""

我们可以看到得到的结果是:每个循环8.53 ms±452 µs(平均±标准偏差,共运行7次,每个循环100个)%timeit相比于%time,%timeit会多次执行测试代码,并且会取它们运行时间的平均值,并且还会计算出它们的标准差,因此这种计算方法计算的结果相对于使用%time执行测试代码一次是比较准确的。

第四种:导入timeit模块来计算代码块的执行时间

import timeit

class Debug:
  def mainProgram(self):
    result = timeit.timeit(stmt="for i in range(100): print(i)", number=10)
    print(result)


main = Debug()
main.mainProgram()
"""
0.05363089999991644 s
"""

导入timeit模块后使用timeit.timeit()来测试想要测试的代码,并且代码以string的形式进行输入,并且需要设定number值,设定测试的该段代码需要执行的次数,最终我们得到0.05363089999991644,单位是s(秒),与内置魔法方法%timeit方法不同的是虽然也是多次计算,但是最终获取的时间是n次执行代码所需的总时间而不是执行一次的时间。

至此,代码的运行速度测试方法的介绍暂时告一段落。(以后可能会进一步更新更加全面的),更多相关python 代码运行时间 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现的生成随机迷宫算法核心代码分享(含游戏完整代码)
Jul 11 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python爬取拉勾网职位数据的方法
Jan 24 Python
python pandas库的安装和创建
Jan 10 Python
处理python中多线程与多进程中的数据共享问题
Jul 28 Python
Python简易版图书管理系统
Aug 12 Python
Django模型中字段属性choice使用说明
Mar 30 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
python 实现音频叠加的示例
Oct 29 Python
讲解Python实例练习逆序输出字符串
May 06 Python
python判断字符串以什么结尾的实例方法
Sep 18 #Python
python绘制趋势图的示例
Sep 17 #Python
Python绘制组合图的示例
Sep 18 #Python
记一次Django响应超慢的解决过程
Sep 17 #Python
Visual Studio Code搭建django项目的方法步骤
Sep 17 #Python
Windows下pycharm安装第三方库失败(通用解决方案)
Sep 17 #Python
PyCharm中关于安装第三方包的三个建议
Sep 17 #Python
You might like
curl不使用文件存取cookie php使用curl获取cookie示例
2014/01/26 PHP
php实现的mongodb操作类
2015/05/28 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
学习JavaScript的最佳方法分享
2011/10/21 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
jQuery深拷贝Json对象简单示例
2016/07/06 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
JavaScript强制类型转换和隐式类型转换操作示例
2019/05/01 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
[07:52]2014DOTA2 TI逗比武士游V社解说背后的故事
2014/07/10 DOTA
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
python从入门到精通(DAY 2)
2015/12/20 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Jupyter notebook远程访问服务器的方法
2018/05/24 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
《藤野先生》教学反思
2014/02/19 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
财务部岗位职责范本
2015/04/14 职场文书
雷锋电影观后感
2015/06/10 职场文书
入党自传范文2015
2015/06/26 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
CSS3实现指纹特效代码
2022/03/17 HTML / CSS