利用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 相关文章推荐
开源软件包和环境管理系统Anaconda的安装使用
Sep 04 Python
python事件驱动event实现详解
Nov 21 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
Python安装selenium包详细过程
Jul 23 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
Aug 17 Python
pytorch打印网络结构的实例
Aug 19 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
python各层级目录下import方法代码实例
Jan 20 Python
Python中threading库实现线程锁与释放锁
May 17 Python
给numpy.array增加维度的超简单方法
Jun 02 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
nodejs+mongodb+vue前后台配置ueditor的示例代码
2018/01/02 NodeJs
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
2018/05/04 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
python flask框架实现传数据到js的方法分析
2019/06/11 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
python requests.get带header
2020/05/05 Python
python如何编写win程序
2020/06/08 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
JSF面试题:Jsf中的核心类用那些?有什么作用?LiftCycle六大生命周期是什么?
2014/07/17 面试题
优秀应届毕业生自荐书
2014/06/29 职场文书
辞职信的写法
2015/02/27 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
Python Pandas知识点之缺失值处理详解
2021/05/11 Python
使用refresh_token实现无感刷新页面
2022/04/26 Javascript