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实现协同过滤的教程
Apr 08 Python
django 创建过滤器的实例详解
Aug 14 Python
利用Python如何生成便签图片详解
Jul 09 Python
一百行python代码将图片转成字符画
Feb 19 Python
Python2与Python3的区别实例分析
Apr 11 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
python同时替换多个字符串方法示例
Sep 17 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
keras输出预测值和真实值方式
Jun 27 Python
PyQt5通过信号实现MVC的示例
Feb 06 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 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(5) 类和对象
2010/02/16 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
一个对于Array的简单扩展
2006/10/03 Javascript
Angularjs 基础入门
2014/12/26 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python Event事件、进程池与线程池、协程解析
2019/10/25 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
用Python实现职工信息管理系统
2020/12/30 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
专科毕业生就业推荐信
2013/11/01 职场文书
大学生毕业自我鉴定范文
2013/11/03 职场文书
建筑工程专业学生的自我评价
2013/12/25 职场文书
有关打架的检讨书
2014/01/25 职场文书
秋季运动会稿件
2014/01/30 职场文书
《去年的树》教学反思
2014/04/11 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
小学生通知书评语
2014/12/31 职场文书
地方课程教学计划
2015/01/19 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS