一行代码搞定Python逐行内存消耗分析
❝
本文完整示例代码及文件已上传至我的
Github
仓库https://github.com/CNFeffery/PythonPracticalSkills❞
我们即将学习的是:一行代码分析Python代码行级别内存消耗
。
很多情况下,我们需要对已经写好的Python
程序的内存消耗进行优化,但是一段代码在运行过程中的内存消耗是动态变化的,这种时候就可以用到memory_profiler
这个第三方库,它可以帮助我们分析记录Python
脚本中,执行到每一行时,内存的消耗及波动变化情况。
memory_profiler
的使用方法超级简单,使用pip install memory_profiler
完成安装后,只需要从memory_profiler
导入profile
并作为要分析的目标函数的装饰器即可,譬如下面这个例子:
❝
demo.py
❞
import numpy as np
from memory_profiler import profile@profile
def demo():a = np.random.rand(10000000)b = np.random.rand(10000000)a_ = a[a < b]b_ = b[a < b]del a, breturn a_, b_if __name__ == '__main__':demo()
接着在终端执行python demo.py
,稍事等待后,就会看到打印出的分析结果报告(这里我是在jupyter lab
里执行的终端命令):
其中Line #
列记录了分析的各行代码具体行位置,Mem usage
列记录了当程序执行到该行时,当前进程占用内存的量,Increment
记录了当前行相比上一行内存消耗的变化量,Occurrences
记录了当前行的执行次数(循环、列表推导等代码行会记作多次),Line Contents
列则记录了具体对应的行代码。
通过这样细致的内存分析结果,我们就能有的放矢地优化我们的代码啦~
本期分享结束,咱们下回见~
一行代码搞定Python逐行内存消耗分析相关推荐
- 一行代码搞定 Python 逐行内存消耗分析
作者 | 费弗里 来源 | Python大数据分析 我们即将学习的是:一行代码分析Python代码行级别内存消耗. 很多情况下,我们需要对已经写好的Python程序的内存消耗进行优化,但是一段代码在运 ...
- 弃繁就简!一行代码搞定 Python 日志!
写了这么多年的 Python ,我一直都是使用 Python 自带的 logging 模块来记录日志,每次需要写一些配置将日志输出到不同的位置,设置不同日志输出格式,或者将日志进行分文件和压缩等.这个 ...
- 【Python】Autoviz: 一行代码搞定数据集探索并可视化
数据集各个特征有什么变化趋势.各个特征之间有何关系,我们可以借助Matplotlib.Seaborn等诸多工具来可视化展示,那么有没有一种工具能一次展示所有的关系了? 本文要介绍的Python工具Au ...
- Python 数据可视化:Stack Graph 堆叠图,标准化堆叠柱形图,标准化的同时还能反应数据量大小的堆叠图(放入自写库,一行代码搞定复杂细节绘图)
本文已在公众号 " 数据分析与商业实践 " 首发.关注一下~,更多商业数据分析案例源码等你来撩.后台回复 "堆叠图" ,即可获取本文的案例示范与包含详细注释的源 ...
- 开源作品ThinkJDBC—一行代码搞定数据库操作
1 简介 ThinkJD,又名ThinkJDBC,一个简洁而强大的开源JDBC操作库.你可以使用Java像ThinkPHP框架的M方法一样,一行代码搞定数据库操作.ThinkJD会自动管理数据库连接, ...
- 一行代码搞定 Scrapy 随机 User-Agent 设置
摘要:爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单,本文就对这些方法进行汇总,提供一种只需要 ...
- 一行代码搞定 FTP 服务
环境搭建: python windows/linux pip install pyftpdlib (安装失败请到这里下载:https://pypi.python.org/pypi/pyftpdlib/ ...
- thinkjdbc 关闭_ThinkJD: ThinkJD,又名ThinkJDBC,一个强大的开源JDBC/ORM操作库,让你尽可能简洁地用一行代码搞定数据库操作。...
1 简介 ThinkJD,又名ThinkJDBC,一个简洁而强大的开源JDBC操作库.你可以使用Java像ThinkPHP框架的M方法一样,一行代码搞定数据库操作.ThinkJD会自动管理数据库连接, ...
- WPF使用Linq 一行代码搞定数据绑定
首先设置好DataGrid控件的相关属性,注意XAML代码文件中的列绑定要和源数据的列名一致,如: Binding="{Binding No}" 详细设置如下: this.data ...
最新文章
- 第六阶段 小学期(一)——电子商务
- 编程语言java-并发(锁)
- py匹配字符串中间的字符串
- 【毕业求职季】-听说你想去大厂看学姐,带你看看网易java面经
- Java进阶:CAS原理详解
- 求两数最大公约数,最小公倍数-Java
- IOC容器和Bean的配置实例
- 11.21 if条件语句 年月日执行判断
- xcode 4.2开发 ——navigation controller 添加按钮
- Java基本数据类型的自动转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
- 复制远程服务器的文件 报错 scp: not a regular file
- 数据挖掘之CTR预估(FM算法)
- php 小墙 垃圾评论,关于php过滤垃圾评论
- 计算机用公式找出第一名,用公式查找Excel工作表中重复数据
- POJ 2989 All Friends
- 16行代码实现微信聊天机器人,自动智能回复,打团了让它来陪老婆聊天
- 软件设计师教程笔记整理
- MATLAB与信号处理
- php如何除去图片水印,如何去掉图片水印,一键去除文字logo图片水印更简单
- Android-使用StaticLayout实现icon跟随TextView末尾效果