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 相关文章推荐
urllib2自定义opener详解
Feb 07 Python
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
python有证书的加密解密实现方法
Nov 19 Python
详细探究Python中的字典容器
Apr 14 Python
Python微信公众号开发平台
Jan 25 Python
python操作oracle的完整教程分享
Jan 30 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
在django中form的label和verbose name的区别说明
May 20 Python
用Python开发app后端有优势吗
Jun 29 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
python反编译教程之2048小游戏实例
Mar 03 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作为Shell脚本语言使用
2006/10/09 PHP
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
php实现模拟post请求用法实例
2015/07/11 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php生成与读取excel文件
2016/10/14 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
AngularJS延迟加载html template
2016/07/27 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
微信小程序在地图选择地址并返回经纬度简单示例
2018/12/03 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
微信小程序上线发布流程图文详解
2019/05/06 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
Python爬虫抓取技术的一些经验
2019/07/12 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Keras loss函数剖析
2020/07/06 Python
python压包的概念及实例详解
2021/02/17 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
销售冠军获奖感言
2014/02/03 职场文书
《雾凇》教学反思
2014/02/17 职场文书
领导班子对照检查材料
2014/09/22 职场文书
怒海潜将观后感
2015/06/11 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python