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

 更新时间:2020年05月09日 09:00:42   作者:落格博客  
这篇文章主要介绍了利用Python如何实时检测自身内存占用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

前言

最近在做文本统计,用 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

总结

到此这篇关于利用Python如何实时检测自身内存占用的文章就介绍到这了,更多相关Python实时检测自身内存占用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyTorch使用自动微分模块的方法和理解

    PyTorch使用自动微分模块的方法和理解

    自动微分模块Autograd为张量增加了自动求导功能,是神经网络训练不可或缺的组成部分,通过backward方法和grad属性,实现梯度的计算和访问,本小节主要讲解了 PyTorch 中非常重要的自动微分模块的使用和理解,感兴趣的朋友一起看看吧
    2024-09-09
  • Python encode()方法和decode()方法详解

    Python encode()方法和decode()方法详解

    encode() 方法为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为“编码”,这篇文章主要介绍了Python encode()方法和decode()方法,需要的朋友可以参考下
    2022-12-12
  • python从内存地址上加载python对象过程详解

    python从内存地址上加载python对象过程详解

    这篇文章主要介绍了python从内存地址上加载pythn对象过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • pandas.loc 选取指定列进行操作的实例

    pandas.loc 选取指定列进行操作的实例

    今天小编就为大家分享一篇pandas.loc 选取指定列进行操作的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python列表list排列组合操作示例

    Python列表list排列组合操作示例

    这篇文章主要介绍了Python列表list排列组合操作,涉及Python排列组合数值运算相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • Python生成随机验证码的两种方法

    Python生成随机验证码的两种方法

    使用python生成随机验证码的方法有很多种,今天小编给大家分享两种方法,大家可以灵活运用这两种方法,设计出适合自己的验证码方法
    2015-12-12
  • Python中利用sorted()函数排序的简单教程

    Python中利用sorted()函数排序的简单教程

    这篇文章主要介绍了Python中利用sorted()函数排序的简单教程,sorted()函数有返回值,在Python的排序实现中发挥着相当重要的作用,需要的朋友可以参考下
    2015-04-04
  • Python爬虫之获取心知天气API实时天气数据并弹窗提醒

    Python爬虫之获取心知天气API实时天气数据并弹窗提醒

    今天我们来学习如何获取心知天气API实时天气数据,制作弹窗提醒,并设置成自启动项目.文中有非常详细的代码示例及介绍,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • 跟老齐学Python之有容乃大的list(1)

    跟老齐学Python之有容乃大的list(1)

    这一讲中的list类型,也是python的一种数据类型。翻译为:列表。LIST在python中具有非常强大的功能。
    2014-09-09
  • Python通过psd-tools解析PSD文件的实现

    Python通过psd-tools解析PSD文件的实现

    本文主要介绍了Python通过psd-tools解析PSD文件的实现,主要包括如何获取PSD文件的基本信息、遍历图层、提取图层详细信息、保存和创建PSD文件,感兴趣的可以了解一下
    2023-12-12

最新评论