利用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 Shell获取hostname和fqdn释疑
Jan 25 Python
Python操作MongoDB详解及实例
May 18 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
Python WXPY实现微信监控报警功能的代码
Oct 20 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
python删除不需要的python文件方法
Apr 24 Python
python实现批量解析邮件并下载附件
Jun 19 Python
在Python中实现替换字符串中的子串的示例
Oct 31 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
python集合的新增元素方法整理
Dec 07 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 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中实现中文字符进制转换原理分析
2011/12/06 PHP
php实现aes加密类分享
2014/02/16 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
2014/04/02 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
Smarty中调用FCKeditor的方法
2014/10/27 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
laravel邮件发送的实现代码示例
2020/01/31 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
深入理解JavaScript系列(22):S.O.L.I.D五大原则之依赖倒置原则DIP详解
2015/03/05 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
jQuery实现验证年龄简单思路
2016/02/24 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
vue数据双向绑定原理解析(get &amp; set)
2017/03/08 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
python中if及if-else如何使用
2020/06/02 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
2020/10/20 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
方正Java笔试题
2014/07/03 面试题
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
Golang bufio详细讲解
2022/04/21 Golang
MySQL 原理与优化之Update 优化
2022/08/14 MySQL