利用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生成随机验证码(中文验证码)示例
Apr 03 Python
Python判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
python opencv 图像拼接的实现方法
Jun 27 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
python实现简单成绩录入系统
Sep 19 Python
wxPython实现带颜色的进度条
Nov 19 Python
python 爬虫 实现增量去重和定时爬取实例
Feb 28 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
Python实现AES加密,解密的两种方法
Oct 03 Python
python 录制系统声音的示例
Dec 21 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP中的use关键字概述
2014/07/23 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
PHP批量修改文件名称的方法分析
2017/02/27 PHP
关于页面嵌入swf覆盖div层的问题的解决方法
2014/02/11 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
JavaScript中string对象
2015/06/12 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
Angular2使用Angular CLI快速搭建工程(一)
2017/05/21 Javascript
React组件生命周期详解
2017/07/03 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
用vue-cli开发vue时的代理设置方法
2018/09/20 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
JavaScript 作用域实例分析
2019/10/02 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
Python开发的实用计算器完整实例
2017/05/10 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
使用Pyhton集合set()实现成果查漏的例子
2019/11/24 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
机械专业毕业生自荐信
2013/11/02 职场文书
语文教育专业推荐信范文
2013/11/25 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
师德标兵事迹材料
2014/12/19 职场文书