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绘制MySQL数据图实现数据可视化
Mar 30 Python
python网络编程之文件下载实例分析
May 20 Python
python检测是文件还是目录的方法
Jul 03 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
python实现上传下载文件功能
Nov 19 Python
基于DataFrame筛选数据与loc的用法详解
May 18 Python
pandas.DataFrame选取/排除特定行的方法
Jul 03 Python
使用 Django Highcharts 实现数据可视化过程解析
Jul 31 Python
Python 实例方法、类方法、静态方法的区别与作用
Aug 14 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
Softmax函数原理及Python实现过程解析
May 22 Python
如何利用python实现Simhash算法
Jun 28 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判断图片格式的七种方法小结
2013/06/03 PHP
PHP开发框架kohana3 自定义路由设置示例
2014/07/14 PHP
PHPCMS手机站伪静态设置详细教程
2017/02/06 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
javascript操作JSON的要领总结
2012/12/09 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
JavaScript调用浏览器打印功能实例分析
2015/07/17 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
微信小程序实现图片压缩
2019/12/03 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
[46:48]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第三局
2016/02/25 DOTA
python实现哈希表
2014/02/07 Python
Python装饰器decorator用法实例
2014/11/10 Python
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Django中login_required装饰器的深入介绍
2017/11/24 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
比利时家具购买网站:Home24
2019/01/03 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
团委书记的竞聘演讲稿
2014/04/24 职场文书
社区服务标语
2014/07/01 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
运动会主持词大全
2015/07/02 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Go语言设计模式之结构型模式
2021/06/22 Golang
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers