利用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爬虫实现网络股票信息爬取的demo
Jan 05 Python
python构建深度神经网络(DNN)
Mar 10 Python
python算法题 链表反转详解
Jul 02 Python
python取均匀不重复的随机数方式
Nov 27 Python
dpn网络的pytorch实现方式
Jan 14 Python
python剪切视频与合并视频的实现
Mar 03 Python
Pandas把dataframe或series转换成list的方法
Jun 14 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
python上selenium的弹框操作实现
Jul 13 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
Django实现翻页的示例代码
May 24 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用正则表达式匹配中文实例详解
2013/11/06 PHP
php实例分享之二维数组排序
2014/05/15 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
微信小程序后台解密用户数据实例详解
2017/06/28 Javascript
JavaScript动态加载重复绑定问题
2018/04/01 Javascript
Angular ng-animate和ng-cookies用法详解
2018/04/18 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
10款最好的Web开发的 Python 框架
2015/03/18 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
详解使用python crontab设置linux定时任务
2016/12/08 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
在weblogic中发布ejb需涉及到哪些配置文件
2012/01/17 面试题
小学毕业典礼主持词
2014/03/27 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2014年终个人工作总结
2014/11/07 职场文书
社区植树节活动总结
2015/02/06 职场文书
学校光盘行动倡议书
2015/04/28 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
如何理解及使用Python闭包
2021/06/01 Python