利用Python实时检测自身内存占用并自动同步数据

林舟
林舟
发布时间:2026-10-13| 7人浏览过
原创

本文介绍如何利用Python的psutil库实时监控进程内存占用,解决大数据处理中内存耗尽问题。通过获取当前进程PID并计算USS值,当内存达到设定阈值(如20GB)时,自动将缓存数据合并写入硬盘并清空字典,实现高效且安全的内存缓冲策略。

Python实时检测自身内存占用方案

前言

近期在进行文本统计项目开发时,使用Python语言实现,遇到了一个颇具挑战性的技术难点:如何高效保存统计结果。

若将所有数据直接保留在内存中,容量显然不足。经过十几小时的运行,内存资源被完全耗尽,导致程序被迫终止。若采用直接写入数据库的方式,由于写入频率过高,处理速度极慢,原本十几小时的任务可能延长至数周,这并非可行的解决方案。

内存缓冲与硬盘同步策略

解决方案

最终,我设计了一种兼顾速度与容量的方案:利用内存作为缓冲区域,当数据积累到一定规模后,一次性将当前所有数据合并并持久化到硬盘中。

然而,该方法存在一个关键问题:如何确定同步至硬盘的最佳时机?通常可依据文件粒度进行处理,例如处理完一个语料文件后同步一次。但我的语料文件大小不一,最大的达10GB,往往在等待文件处理完成前内存就已溢出。若尝试通过统计数据量来判断,又难以精确预估:阈值设得太低会导致频繁写入,失去缓冲的意义;阈值设得太高,则在达到数量限制前内存已爆满。此外,考虑到未来程序可能运行在不同配置的设备上,要求其他开发者自行计算阈值并不友好。因此,我想到了一种新方法:让Python程序自行检测其内存占用情况,当内存使用接近上限或达到预设阈值时,自动执行一次硬盘同步写入操作。

对于其他开发者而言,查看自身设备的总内存大小十分便捷,只需根据系统实际运行状况设置一个合理的触发阈值,即可实现自动化管理,操作相当方便。

使用psutil监控进程内存

要实现Python对自身内存占用的监控,需借助psutil库与系统进行交互。其基本逻辑是:首先获取当前程序的进程ID(PID),随后依据该PID向系统查询详细的进程信息。


def get_current_memory_gb() -> int:
# 获取当前进程内存占用。
pid = os.getpid()
p = psutil.Process(pid)
info = p.memory_full_info()
return info.uss / 1024. / 1024. / 1024.

例如,若我的系统总内存为32GB,我可以安全地将阈值设定为20GB。在使用Python进行语料统计时,当进程内存占用达到20GB时,程序会将当前数据写入硬盘,同步统计结果,随后清空程序内部的字典缓存以释放内存空间。

psutil库介绍与安装

Python之psutil

psutil是一个跨平台的系统监控库,能够轻松获取系统正在运行的进程信息及系统资源利用率,包括CPU、内存、磁盘和网络等相关数据。

Linux系统下的安装


pip install psutil

总结

至此,关于利用Python实时检测自身内存占用的介绍已完毕。如需了解更多相关Python实时检测内存占用的内容,请搜索本站过往文章或继续浏览后续相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。