利用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 相关文章推荐
Python深度优先算法生成迷宫
Jan 22 Python
浅析python实现scrapy定时执行爬虫
Mar 04 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
Python3中exp()函数用法分析
Feb 19 Python
详解python中index()、find()方法
Aug 29 Python
logging level级别介绍
Feb 21 Python
Python对象的属性访问过程详解
Mar 05 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
Python爬虫教程知识点总结
Oct 19 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
python中二分查找法的实现方法
Dec 06 Python
Python爬取网站图片并保存的实现示例
Feb 26 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
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
ThinkPHP单字母函数(快捷方法)使用总结
2014/07/23 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
JavaScript实现动态增删表格的方法
2017/03/09 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
浅谈如何优雅处理JavaScript异步错误
2019/11/12 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
如何在vue 中引入使用jquery
2020/11/10 jQuery
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
Flask框架配置与调试操作示例
2018/07/23 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
python实现梯度法 python最速下降法
2020/03/24 Python
python爬取招聘要求等信息实例
2020/11/20 Python
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
信息专业本科生个人的自我评价
2013/10/28 职场文书
学院书画协会部门职责
2013/11/28 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
化工操作工岗位职责
2014/04/29 职场文书
主持人开幕词
2015/01/29 职场文书
加薪通知
2015/04/25 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
师范生见习总结范文
2015/06/23 职场文书