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程序运行原理图文解析
Feb 10 Python
人脸识别经典算法一 特征脸方法(Eigenface)
Mar 13 Python
python3实现随机数
Jun 25 Python
Python爬虫之UserAgent的使用实例
Feb 21 Python
python实现文件的备份流程详解
Jun 18 Python
python多线程http压力测试脚本
Jun 25 Python
python gdal安装与简单使用
Aug 01 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
Sep 18 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
Django模型中字段属性choice使用说明
Mar 30 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
Python远程方法调用实现过程解析
Jul 28 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
php 无极分类(递归)实现代码
2010/01/05 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
简介PHP的Yii框架中缓存的一些高级用法
2016/03/29 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
jquery超简单实现手风琴效果的方法
2015/06/05 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
JavaScript省市级联下拉菜单实例
2017/02/14 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
2018/12/05 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
详解Python中for循环的使用
2015/04/14 Python
python自动化报告的输出用例详解
2018/05/30 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
汉森批发:Hansen Wholesale
2018/05/24 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
劳动竞赛活动方案
2014/02/20 职场文书
党员自我对照检查材料
2014/08/19 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
Python实现文本文件拆分写入到多个文本文件的方法
2021/04/18 Python
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS
PyTorch中permute的使用方法
2022/04/26 Python