搜索

如何使用Python动态控制Linux系统的内存占用百分比

gecimao 发表于 2019-07-19 15:56 | 查看: | 回复:

  近期有网上朋友寻求帮助:如何通过脚本动态控制Linux系统的内存占用百分比?经过一番百度+编写调试,终于初步完成了动态控制Linux系统内存占用百分比。现写出来以帮助更多的朋友。

  根据需求是动态控制Linux系统内存占用百分比,比如当前内存占用30%,如果设置内存占用为70%,则需要申请内存使达到占用70%;如果再降低到40%,则需要释放部分申请的内存。其实脚本的本质是内存动态申请与释放。

  注意:因为Python脚本运行之前内存有一定占用,故设定内存占用不能低于该百分比。

  通过查询资料,使用Python动态申请内存块,可以使用ctypes包中的函数,导入包及代码如下所示:

  从上述两幅图中可以看出,申请内存前内存占用295MB,申请后内存占用397MB,增加了约100MB内存占用。

  由于Python对内存是有垃圾回收机制的,采用对象引用计数方式。当对象的引用计数为0时,启动垃圾回收GC。此处内存动态释放就是使用该原理。

  说明:将None赋值给对象mem后,mem对象的引用计数即为0,此时垃圾回收启动,释放mem对象占用的内存。

  由于需要设定内存占用百分比,故需要获取系统总物理内存和占用内存。本文使用的方法是读取系统文件“/proc/meminfo”,从中解析出总内存大小以及当前内存占用大小等内存相关的信息。该文件内容格式如下图所示:

  说明:按行读取meminfo文件内容,创建字典对象mem,将meminfo文件第一列设置为mem对象的键值,将meminfo文件第二列数字设置为mem对象的值。

  通过读取键盘输入字符串,然后转换为数字实现接收用户输入的百分比,代码如下所示:

  注意:此处键盘输入的都是字符串,需要进行字符串转换为数字,使用float()或long()函数进行转换。

  测试使用两个Python脚本文件,分别是test.py和mem_rate.py,其功能分别是查看当前内存占用和动态设定内存占用百分比。如下图所示:

  注意:上述两个文件需要使用“chmod +x *.py”修改为可执行属性。

  查看当前内存占用百分比,使用上述test.py文件,运行命令为“./test.py”,运行结果如下图所示:

  动态设置内存占用百分比使用上述mem_rate.py脚本,注意该脚本文件第一行代码为“#!/usr/bin/python2.6”,表示该脚本使用python2.6程序运行。该行需要修改为待运行Linux系统中Python实际的安装程序路径。

  处于待输入状态。另外显示了当前内存占用(321MB),总内存大小(1869MB)以及内存占用百分比(17%)。

  如果此时设置内存占用百分比为80%,则脚本会每次申请10MB空间,直至内存占用接近或等于80%为止。如下图所示:

本文链接:http://hem-larm.com/dongtaicunchufenpei/1016.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部