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编写Linux系统守护进程实例
Feb 03 Python
Python探索之修改Python搜索路径
Oct 25 Python
python验证码识别教程之利用滴水算法分割图片
Jun 05 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
python处理两种分隔符的数据集方法
Dec 12 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
pytorch AvgPool2d函数使用详解
Jan 03 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
django 模型字段设置默认值代码
Jul 15 Python
python 实现性别识别
Nov 21 Python
python编写函数注意事项总结
Mar 29 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
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
Div Select挡住的解决办法
2008/08/07 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
javascript学习之json入门
2016/12/22 Javascript
浅谈Express异步进化史
2017/09/09 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
前端防止用户重复提交js实现代码示例
2018/09/07 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
如何利用nodejs自动定时发送邮件提醒(超实用)
2020/12/01 NodeJs
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
浅谈django 重载str 方法
2020/05/19 Python
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
产品开发计划书
2014/04/27 职场文书
会计专业求职信
2014/08/10 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
2015元旦主持词开场白和结束语
2014/12/14 职场文书
写给导师的自荐信
2015/03/06 职场文书
师范生见习自我总结
2015/06/23 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
《巫师》是美食游戏?CDPR10月将推出《巫师》官方食谱
2022/04/03 其他游戏