当前位置:首页 » 编程语言 » python读取内存

python读取内存

发布时间: 2025-07-17 08:50:25

① 性能测试,python 内存分析工具 -memray

Memray是彭博社开发的一款开源内存剖析工具,上线一个多月即获得8.4k星,因其在Python内存分析领域的出色表现,被誉为明星项目。Memray能够跟踪Python代码、本地扩展模块及Python解释器的内存分配情况,并生成多种报告,帮助开发者深入分析Python代码的内存使用状况。


Memray的安装和使用相对简单,只需运行命令:python3 -m memray --help以获取详细帮助信息。


在使用Memray时,可以通过以下命令执行分析:memray-py文件名.进程id.bin,进而将分析结果转换为HTML格式的火焰图报告,直观展示程序调用过程中的内存分配情况,宽度表示函数占用内存的多少。


值得注意的是,使用火焰图报告时,与不加参数的分析结果看似相似,实际上大相径庭。火焰图深入追踪内存分配,有助于在Python内存溢出时快速定位问题,但同时会增加数据收集速度和文件大小。


Memray提供多种报告形式,包括:



  • 默认排序:根据Total memory从大到小排列。

  • 按私有内存排序:使用"O"参数,按内存对象的私有内存大小从大到小排序。

  • 按内存分配次数排序:使用"A"参数,按内存分配次数从高到底排序。


借助这些统计信息,开发者可以迅速定位占用内存大的对象和频繁分配内存的对象,从而重点分析和优化这些关键部分。


Memray还支持多种报告生成命令,包括:



  • 火焰图报告:使用flamegraph命令生成。

  • 表格报告:使用table命令生成。

  • 树形报告:使用tree命令生成。

  • 概要报告:使用summary命令生成。

  • 详细统计报告:使用stats命令生成。


通过灵活使用这些报告类型,开发者可以全面了解Python程序的内存使用情况,有效提升代码性能和稳定性。

② python 一个文件太大+内存装不下+怎么读取 mongo

Python 环境下文件的读取问题,请参见拙文Python 基础 —— 文件

这是一道着名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。

1. read() 接口的问题

f = open(filename, 'rb')
f.read()12

我们来读取 1 个 nginx 的日至文件,规模为 3Gb 大小。read() 方法执行的操作,是一次性全部读入内存,显然会造成:

MemoryError...12

也即会发生内存溢出。

2. 解决方案:转换接口

  • (1)readlines() :读取全部的行,构成一个 list,实践表明还是会造成内存的问题;

    for line in f.reanlines(): ...
  • 1

  • 2

  • (2)readline():每次读取一行,

    while True:
    line = f.readline() if not line: break
  • 1

  • 2

  • 3

  • 4

  • (3)read(1024):重载,指定每次读取的长度

    while True: block = f.read(1024) if not block: break
  • 1

  • 2

  • 3

  • 4

  • 3. 真正 Pythonic 的方法

    真正 Pythonci 的方法,使用 with 结构:

  • with open(filename, 'rb') as f: for line in f:

  • <do something with the line>123

  • 对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。

    There should be one – and preferably only one – obvious way to do it.

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:581
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:683
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1012
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:254
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:113
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:712