利用Python如何实时检测自身内存占用

作者:落格博客 时间:2023-01-11 03:12:02 

前言

最近在做文本统计,用 Python 实现,遇到了一个比较有意思的难题——如何保存统计结果。

直接写入内存实在是放不下,十几个小时后内存耗尽,程序被迫关闭。如果直接写入数据库吧,每次写入又太慢了,本来就十几个小时了,这样下去就要往星期上数了,也不是个办法。

解决方案

最后,我想到了一个两者兼顾的方案——用内存做缓冲,达到一定量之后一次性将当前所有数据合并到硬盘里。

但这样就有一个阈值,如何确定同步硬盘的时机,通常可以按照文件粒度进行处理,比如处理一个语料文件同步一次……但我的语料有大有小,大的有10GB,根本等不到那一刻内存就 * 了,后来我想用统计数据量进行判断……可这又有点难以估计,小了吧频繁写入,缓存的意义就不大了,大了吧还没等到条目数量达到,内存就已经爆满。另外考虑到将来程序会运行在不同配置的设备上,让其他开发者根据自身情况计算这个阈值也有点太不友好,于是我想到了一个办法——不如让 Python 自己检测自己的内存占用,如果快满了(或者达到阈值),就同步写入硬盘一次。

对于其他开发者来说,自身设备的内存多大是很容易查看的,根据系统运行状况设置一个合理的阈值,相当方便。

要用 Python 监控自身内存占用,要使用 psutil 这个库来和系统进行交互,基本逻辑就是先拿到自己的 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 内存了,就把当前的数据写入硬盘,同步统计数据,然后清空程序里的字典缓存释放内存。

python之psutil

psutil是个跨平台库,能够轻松实现获取系统运行的进程和系统利用率,包括CPU、内存、磁盘、网络等信息。

Linux系统下的安装


pip install psutil

来源:https://www.logcg.com/archives/3367.html

标签:python,检测,内存
0
投稿

猜你喜欢

  • Python中反转二维数组的行和列问题

    2021-06-24 13:48:27
  • 通过SqlCmd执行超大SQL文件的方法

    2024-01-21 00:35:50
  • vue中el-table两个表尾合计行联动同步滚动条实例代码

    2023-07-02 17:08:56
  • 基于PyQt5制作一个数据图表生成器

    2022-08-11 16:20:25
  • Python中flatten( )函数及函数用法详解

    2023-11-28 04:09:47
  • python optparse模块使用实例

    2021-02-03 22:01:36
  • 如何使用微信公众平台开发模式实现多客服

    2023-11-14 17:48:37
  • 用python 制作图片转pdf工具

    2023-02-13 09:14:51
  • PHP中最低级别的错误类型总结

    2023-09-04 16:46:17
  • js查找/搜索页面中的字符源代码

    2008-02-17 17:13:00
  • Django配置Mysql数据库连接的实现

    2024-01-28 10:48:33
  • 安装SQL2005 29506错误码的解决方案

    2024-01-19 14:15:31
  • 使用SQL Server 2000索引视图提高性能

    2009-01-13 13:47:00
  • 引用其它js时如何同时处理多个window.onload事件

    2024-04-16 10:31:47
  • python使用pandas处理excel文件转为csv文件的方法示例

    2021-09-13 07:15:52
  • MySQL的Query Cache图文详解

    2024-01-28 01:18:42
  • 使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤

    2022-03-03 10:04:54
  • MYSQL数据库表设计与优化(二)

    2010-10-25 20:12:00
  • python脚本定时发送邮件

    2023-08-07 16:36:02
  • 情人节快乐! python绘制漂亮玫瑰

    2021-02-07 18:22:48
  • asp之家 网络编程 m.aspxhome.com