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 04 Python
Python写入数据到MP3文件中的方法
Jul 10 Python
基于numpy.random.randn()与rand()的区别详解
Apr 17 Python
Python多重继承的方法解析执行顺序实例分析
May 26 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
10个Python小技巧你值得拥有
Sep 29 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
python 将字符串中的数字相加求和的实现
Jul 18 Python
Python中的四种交换数值的方法解析
Nov 18 Python
PyTorch 导数应用的使用教程
Aug 31 Python
python利用opencv实现颜色检测
Feb 23 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 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中文件上传的安全问题
2006/10/09 PHP
PHP迭代器的内部执行过程详解
2013/11/12 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
php数组中删除元素之重新索引的方法
2014/09/16 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
2015/09/02 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
用Vue.extend构建消息提示组件的方法实例
2017/08/08 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
2019/04/12 Javascript
微信小程序云开发 生成带参小程序码流程
2019/05/18 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
python处理csv数据的方法
2015/03/11 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
Python中如何导入类示例详解
2019/04/17 Python
HTML5+WebSocket实现多文件同时上传的实例
2016/12/29 HTML / CSS
微软美国官方网站:Microsoft美国
2018/05/10 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
通知的格式范文
2015/04/27 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
人生一定要学会的三样东西:放下、忘记、珍惜
2019/08/21 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
python实现简单反弹球游戏
2021/04/12 Python
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Pygame游戏开发之太空射击实战敌人精灵篇
2022/08/05 Python