利用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 相关文章推荐
python2.7删除文件夹和删除文件代码实例
Dec 18 Python
Python中Collection的使用小技巧
Aug 18 Python
解析Python中的二进制位运算符
May 13 Python
将Python的Django框架与认证系统整合的方法
Jul 24 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Django 连接sql server数据库的方法
Jun 30 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
python中的None与NULL用法说明
May 25 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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浮点比较大小的方法
2016/02/14 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
jquery 批量上传图片实现代码
2010/01/28 Javascript
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
chrome下jq width()方法取值为0的解决方法
2014/05/26 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
判断数组是否包含某个元素的js函数实现方法
2016/05/19 Javascript
微信小程序 swiper组件轮播图详解及实例
2016/11/16 Javascript
JS实现的tab切换选项卡效果示例
2017/02/28 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
[02:33]DOTA2英雄基础教程 司夜刺客
2013/12/04 DOTA
[01:23]一分钟告诉你 DOTA2为什么叫信仰2
2014/06/20 DOTA
详解python3百度指数抓取实例
2016/12/12 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
python使用Matplotlib画饼图
2018/09/25 Python
python绘制评估优化算法性能的测试函数
2019/06/25 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
农民致富事迹材料
2014/01/23 职场文书
社会实践感言
2014/01/25 职场文书
元旦活动感言
2014/03/08 职场文书
旷课检讨书500字
2014/10/14 职场文书
2015年教师节活动总结
2015/03/20 职场文书
交通事故代理词范文
2015/05/23 职场文书
《给予树》教学反思
2016/03/03 职场文书
意外事故赔偿协议书
2016/03/22 职场文书
导游词之云南丽江古城
2019/09/17 职场文书