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发送伪造的arp请求
Jan 09 Python
pycharm 使用心得(五)断点调试
Jun 06 Python
Python实现类似jQuery使用中的链式调用的示例
Jun 16 Python
Django数据库操作的实例(增删改查)
Sep 04 Python
Python上下文管理器和with块详解
Sep 09 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
python3对拉勾数据进行可视化分析的方法详解
Apr 03 Python
python文字转语音的实例代码分析
Nov 12 Python
Python flask框架实现浏览器点击自定义跳转页面
Jun 04 Python
python的flask框架难学吗
Jul 31 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 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
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
js 日期比较相关天数代码
2014/04/02 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
JS中数组重排序方法
2016/11/11 Javascript
Ajax基础知识详解
2017/02/17 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
2017/06/18 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
react实现antd线上主题动态切换功能
2019/08/12 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
详解Python:面向对象编程
2019/04/10 Python
在python plt图表中文字大小调节的方法
2019/07/08 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
迅雷Cued工作心得体会
2014/01/27 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
养成教育经验材料
2014/05/26 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
学生上课说话检讨书
2014/10/25 职场文书
税务会计岗位职责
2015/04/02 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
详解MySQL的半同步
2021/04/22 MySQL
Python中itertools库的四个函数介绍
2022/04/06 Python
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS