利用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装饰器decorator用法实例
Nov 10 Python
python中for语句简单遍历数据的方法
May 07 Python
利用Python实现网络测试的脚本分享
May 26 Python
Django 视图层(view)的使用
Nov 09 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Django Docker容器化部署之Django-Docker本地部署
Oct 09 Python
Python自动化完成tb喵币任务的操作方法
Oct 30 Python
Python将列表中的元素转化为数字并排序的示例
Dec 25 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
Feb 14 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
用Python提取PDF表格的方法
Apr 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初学者头疼问题总结
2006/07/08 PHP
php 传值赋值与引用赋值的区别
2010/12/29 PHP
php中常用的预定义变量小结
2012/05/09 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
13个PHP函数超实用
2015/10/21 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
Node.JS枚举统计当前文件夹和子目录下所有代码文件行数
2019/08/23 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
Python的IDEL增加清屏功能实例
2017/06/19 Python
Python 实现Numpy中找出array中最大值所对应的行和列
2019/11/26 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
个性大学生自我评价
2013/12/04 职场文书
《阳光》教学反思
2014/02/23 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
学习雷锋倡议书
2014/04/15 职场文书
法人授权委托书样本
2014/09/19 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
销售会议开幕词
2015/01/28 职场文书
2015大学生暑假调查报告
2015/07/13 职场文书
2015军训通讯稿大全
2015/07/18 职场文书