利用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实现通过shelve修改对象实例
Sep 26 Python
解决python报错MemoryError的问题
Jun 26 Python
基于Python实现用户管理系统
Feb 26 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
Python编程中类与类的关系详解
Aug 08 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
python用什么编辑器进行项目开发
Jun 17 Python
Python Web项目Cherrypy使用方法镜像
Nov 05 Python
如何获取numpy array前N个最大值
May 14 Python
Python中如何处理常见报错
Jan 18 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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
PHP中实现Bloom Filter算法
2015/03/30 PHP
php编写简单的文章发布程序
2015/06/18 PHP
yii使用bootstrap分页样式的实例
2017/01/17 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
全面了解JavaScript的作用域链
2019/04/03 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
JavaScript this关键字指向常用情况解析
2020/09/02 Javascript
javascript实现搜索筛选功能实例代码
2020/11/12 Javascript
一个Python最简单的接口自动化框架
2018/01/02 Python
python学生信息管理系统(完整版)
2020/04/05 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
python的re模块使用方法详解
2019/07/26 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
三星美国官网:Samsung美国
2017/02/06 全球购物
全球最大的游戏市场:G2A
2018/07/05 全球购物
计算机专业自荐信
2013/10/14 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
颐和园的导游词
2015/01/30 职场文书
鉴史问廉观后感
2015/06/10 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python