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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
python对excel文档去重及求和的实例
Apr 18 Python
Sanic框架路由用法实例分析
Jul 16 Python
python实现随机漫步算法
Aug 27 Python
python生成九宫格图片
Nov 19 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
Keras 使用 Lambda层详解
Jun 10 Python
python爬虫智能翻页批量下载文件的实例详解
Feb 02 Python
浅谈Python列表嵌套字典转化的问题
Apr 07 Python
python用字节处理文件实例讲解
Apr 13 Python
python实现简单的井字棋
May 26 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中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
2013/06/06 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
Javascript中this关键字的一些小知识
2015/03/15 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
JS基础随笔(菜鸟必看篇)
2016/07/13 Javascript
数据结构中的各种排序方法小结(JS实现)
2016/07/23 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
Python遍历指定文件及文件夹的方法
2015/05/09 Python
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python实现插入排序和选择排序的方法
2019/05/12 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
python实现在列表中查找某个元素的下标示例
2020/11/16 Python
python的dict判断key是否存在的方法
2020/12/09 Python
详解background属性的8个属性值(面试题)
2020/11/02 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
Expedia法国:全球最大在线旅游公司
2018/09/30 全球购物
Java程序员面试题
2013/07/15 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
12岁生日感言
2014/01/21 职场文书
个人担保书范文
2014/05/20 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
外出听课学习心得体会
2016/01/15 职场文书
个人房屋租赁合同(标准范本)
2019/09/16 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript