利用4行Python代码监测每一行程序的运行时间和空间消耗


Posted in Python onApril 22, 2020

Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,其具有高可扩展性和高可移植性,具有广泛的标准库,受到开发者的追捧,广泛应用于开发运维(DevOps)、数据科学、网站开发和安全。然而,它没有因速度和空间而赢得任何称赞,主要原因是Python是一门动态类型语言,每一个简单的操作都需要大量的指令才能完成。

所以这更加需要开发者在使用Python语言开发项目时协调好程序运行的时间和空间。

利用4行Python代码监测每一行程序的运行时间和空间消耗

1、分析时间耗时

分析项目消耗的时间消耗,依托于line_profiler模块,其可以计算出执行每行代码所需占用的CPU时间。

第1步:安装line_profiler模块,我是用pip安装一直失败,所以下载到本地进行离线安装,指令如下所示:

pip install .\line_profiler-3.0.2-cp37-cp37m-win_amd64.whl

安装成功效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

第2步:分析每行代码的运行时间,本案例Demo检测for循环一万次累加和while循环一万次累加的时间,并进行对比,实现代码如下所示:

from line_profiler import LineProfiler
 
def operation1():
 num=0
 for i in range(10000):
  num += 1
 
def operation2():
 num=0
 while(num < 10000):
  num += 1
 
if __name__ == "__main__":
 lprofiler = LineProfiler(operation1,operation2)
 lprofiler.run('operation1()')
 lprofiler.run('operation2()')
 lprofiler.print_stats()

运行程序,可见while循环速度稍微慢一些,效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

2、分析空间耗时

memory_profiler模块可实现对Python项目中每一个代码的内存消耗进行分析和监控。

第1步:安装memory_profiler库文件,指令如下所示:

pip install memory_profiler

安装成功效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

第2步:分析每行代码的空间消耗,本案例Demo检测for循环一万次累加和while循环一万次累加的消耗空间,并进行对比,实现代码如下所示:

from memory_profiler import profile
 
@profile
def operation1():
 num=0
 for i in range(10000):
  num += 1
 
@profile
def operation2():
 num=0
 while(num < 10000):
  num += 1
 
if __name__ == "__main__":
 operation1()
 operation2()

由于是简单运算消耗的内存是微乎其微的,效果如下所示:

利用4行Python代码监测每一行程序的运行时间和空间消耗

本篇博文仅介绍以上两种模块,其实有更多有意思的模块可以实现对程序的运行时间和空间消耗的监测,感兴趣的朋友可以多多尝试。

到此这篇关于利用4行Python代码监测每一行程序的运行时间和空间消耗的文章就介绍到这了,更多相关python 监测程序运行时间空间消耗内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3 能振兴 Python的原因分析
Nov 28 Python
Python中的getopt函数使用详解
Jul 28 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
Python异常处理操作实例详解
May 10 Python
利用Python如何实现数据驱动的接口自动化测试
May 11 Python
python opencv实现切变换 不裁减图片
Jul 26 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
python实现布隆过滤器及原理解析
Dec 08 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 Python
opencv实现图像几何变换
Mar 24 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 #Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 #Python
django使用JWT保存用户登录信息
Apr 22 #Python
pandas中read_csv、rolling、expanding用法详解
Apr 21 #Python
Django如何使用jwt获取用户信息
Apr 21 #Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
Apr 21 #Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 #Python
You might like
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
JavaScript控制Session操作方法
2013/01/17 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
Java的for语句中break, continue和return的区别
2013/12/19 面试题
描述内存分配方式以及它们的区别
2016/10/15 面试题
大学军训感言1000字
2014/02/25 职场文书
高中生操行评语大全
2014/04/25 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
军训通讯稿范文
2015/07/18 职场文书
技术入股协议书
2016/03/22 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
golang 实现菜单树的生成方式
2021/04/28 Golang
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python