利用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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
python抓取京东商城手机列表url实例代码
Dec 18 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
详解Python中的__new__、__init__、__call__三个特殊方法
Jun 02 Python
Python subprocess库的使用详解
Oct 26 Python
python3利用Socket实现通信的方法示例
May 06 Python
Python安装与基本数据类型教程详解
May 29 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
PyTorch学习:动态图和静态图的例子
Jan 06 Python
Python Spyder 调出缩进对齐线的操作
Feb 26 Python
Pytorch实现图像识别之数字识别(附详细注释)
May 11 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函数指定默认值方法的小例子
2013/12/04 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
javascript动画浅析
2012/08/30 Javascript
JavaScript中json使用自己总结
2013/08/13 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
[04:40]DOTA2-DPC中国联赛1月26日Recap集锦
2021/03/11 DOTA
Python检测网络延迟的代码
2018/05/15 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
2019/06/21 Python
Django 用户认证组件使用详解
2019/07/23 Python
python针对mysql数据库的连接、查询、更新、删除操作示例
2019/09/11 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
工作说明书格式
2014/07/29 职场文书
思想政治表现评语
2015/01/04 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技