利用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实现2048小游戏
Mar 30 Python
python实现中文分词FMM算法实例
Jul 10 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
简单实现python画圆功能
Jan 25 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
Python学习笔记之装饰器
Aug 06 Python
单身狗福利?Python爬取某婚恋网征婚数据
Jun 03 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 header函数使用教程
2013/09/05 PHP
php实现头像上传预览功能
2017/04/27 PHP
JavaScript的9个陷阱及评点分析
2008/05/16 Javascript
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
JS实现图片预览的两种方式
2017/06/27 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
python实现批量监控网站
2016/09/09 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
Python GUI编程完整示例
2019/04/04 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python模块 _winreg操作注册表
2020/02/05 Python
python时间time模块处理大全
2020/10/25 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
linux面试题参考答案(7)
2014/07/24 面试题
《社戏》教学反思
2014/04/15 职场文书
期中考试反思800字
2014/05/01 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
浅谈python中的多态
2021/06/15 Python
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS