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 迭代器工具包【推荐】
May 06 Python
Python网络爬虫中的同步与异步示例详解
Feb 03 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
Mar 13 Python
利用Python如何制作好玩的GIF动图详解
Jul 11 Python
Python访问MongoDB,并且转换成Dataframe的方法
Oct 15 Python
Django使用paginator插件实现翻页功能的实例
Oct 24 Python
基于python指定包的安装路径方法
Oct 27 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python底层封装实现方法详解
Jan 22 Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 Python
python求解汉诺塔游戏
Jul 09 Python
python中sys模块的介绍与实例
Apr 17 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/08/02 PHP
CodeIgniter输出中文乱码的两种解决办法
2014/06/12 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
Jquery的hover方法让鼠标经过li时背景变色
2013/09/06 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
Angular.js中控制器之间的传值详解
2017/04/24 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
JavaScript实现密码强度实时验证
2020/03/18 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
Python判断直线和矩形是否相交的方法
2015/07/14 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
详解python中__name__的意义以及作用
2019/08/07 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
用Python写一个自动木马程序
2019/09/17 Python
python str字符串转uuid实例
2020/03/03 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
初学者学习Python好还是Java好
2020/05/26 Python
如何清空Session
2015/02/23 面试题
关于Java finally的面试题
2016/04/27 面试题
教育科研先进个人材料
2014/01/26 职场文书
《囚绿记》教学反思
2014/03/01 职场文书
美术社团活动总结
2014/06/27 职场文书
建党伟业观后感
2015/06/01 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
golang json数组拼接的实例
2021/04/28 Golang