使用Python动态控制Linux系统的内存占用百分比研究.doc

使用Python动态控制Linux系统的内存占用百分比研究.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何使用Python动态控制Linux系统的内存占用百分比? 近期有网上朋友寻求帮助:如何通过脚本动态控制Linux系统的内存占用百分比?经过一番百度+编写调试,终于初步完成了动态控制Linux系统内存占用百分比。现写出来以帮助更多的朋友。 1 前言 根据需求是动态控制Linux系统内存占用百分比,比如当前内存占用30%,如果设置内存占用为70%,则需要申请内存使达到占用70%;如果再降低到40%,则需要释放部分申请的内存。其实脚本的本质是内存动态申请与释放。 注意:因为Python脚本运行之前内存有一定占用,故设定内存占用不能低于该百分比。 2 内存动态申请 通过查询资料,使用Python动态申请内存块,可以使用ctypes包中的函数,导入包及代码如下所示: from ctypes import * mem=create_string_buffer(1024) 说明:内存申请使用create_string_buffer()函数,上面申请了1024字节的内存块。 下面演示申请100MB内存前后变化 申请前如下图所示: 使用代码如下: mem=create_string_buffer(104857600) 申请后如下图所示: 从上述两幅图中可以看出,申请内存前内存占用295MB,申请后内存占用397MB,增加了约100MB内存占用。 3 内存动态释放 由于Python对内存是有垃圾回收机制的,采用对象引用计数方式。当对象的引用计数为0时,启动垃圾回收GC。此处内存动态释放就是使用该原理。 代码如下: mem=None 释放后内存占用如下图所示: 内存占用由397MB降低到297MB,释放了100MB内存占用。 说明:将None赋值给对象mem后,mem对象的引用计数即为0,此时垃圾回收启动,释放mem对象占用的内存。 4 系统总内存、占用内存检测 由于需要设定内存占用百分比,故需要获取系统总物理内存和占用内存。本文使用的方法是读取系统文件“/proc/meminfo”,从中解析出总内存大小以及当前内存占用大小等内存相关的信息。该文件内容格式如下图所示: 代码片段如下所示: f = open(/proc/meminfo) lines = f.readlines() f.close() for line in lines: if len(line) 2: continue name = line.split(:)[0] var = line.split(:)[1].split()[0] mem[name] = long(var) * 1024.0 mem[MemUsed] = mem[MemTotal] - mem[MemFree] 说明:按行读取meminfo文件内容,创建字典对象mem,将meminfo文件第一列设置为mem对象的键值,将meminfo文件第二列数字设置为mem对象的值。 5 获取用户输入百分比 通过读取键盘输入字符串,然后转换为数字实现接收用户输入的百分比,代码如下所示: input_str=raw_input(Input Used Memory`s Rate or q to exit:) rate=float(input_str) 注意:此处键盘输入的都是字符串,需要进行字符串转换为数字,使用float()或long()函数进行转换。 6 动态设置内存占用百分比测试 测试使用两个Python脚本文件,分别是test.py和mem_rate.py,其功能分别是查看当前内存占用和动态设定内存占用百分比。如下图所示: 注意:上述两个文件需要使用“chmod +x *.py”修改为可执行属性。 6.1 查看当前内存占用 查看当前内存占用百分比,使用上述test.py文件,运行命令为“./test.py”,运行结果如下图所示: 当前使用内存为320MB,占用百分比为17%。 6.2 动态设置内存占用百分比 动态设置内存占用百分比使用上述mem_rate.py脚本,注意该脚本文件第一行代码为“#!/usr/bin/python2.6”,表示该脚本使用python2.6程序运行。该行需要修改为待运行Linux系统中Python实际的安装程序路径。 动态内存百分比设置界面如下图所示: 处于待输入状态。另外显示了当前内存占用(321MB),总内存大小(1869MB)以及内存占用百分比(17%)。 如果此时设置内存占用百分比为80%,则脚本会每次申请10MB空间,直至内存占用接近或等于80%为止。如下图所示: 内存申请过程如下图所示: 内存申请

您可能关注的文档

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档