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自动化测试工具Splinter简介和使用实例
May 13 Python
python查看列的唯一值方法
Jul 17 Python
Python使用matplotlib绘制三维图形示例
Aug 25 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
浅谈python下tiff图像的读取和保存方法
Dec 04 Python
对python pandas读取剪贴板内容的方法详解
Jan 24 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
详解python中groupby函数通俗易懂
May 14 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
Mar 04 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
第十三节--对象串行化
2006/11/16 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
jQuery侧边栏随窗口滚动实现方法
2013/03/04 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
Node.js HTTP服务器中的文件、图片上传的方法
2019/09/23 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
数据挖掘之Apriori算法详解和Python实现代码分享
2014/11/07 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python实现扫描日志关键字的示例
2018/04/28 Python
PyTorch的Optimizer训练工具的实现
2019/08/18 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
学生档案自我鉴定
2013/10/07 职场文书
研发工程师岗位职责
2014/04/28 职场文书
赔偿协议书范本
2014/09/12 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
优秀团员个人总结
2015/02/26 职场文书
何玥事迹观后感
2015/06/16 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书