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

linux里一切皆为文件,在linux/unix的根文件夹下,有个/proc文件夹,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统同意与内核内部数据结构交互。获取有关进程的实用信息。在执行中(on the fly)改变设置(通过改变内核參数)。与其它文件系统不同。/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息例如以下:
o进程信息:系统中的不论什么一个进程,在 proc 的子文件夹中都有一个同名的进程 ID,能够找到 cmdline、mem、root、stat、statm,以及 status。某些信息仅仅有超级用户可见,比如进程根文件夹。每个单独含有现有进程信息的进程有一些可用的专门链接,系统中的不论什么一个进程都有一个单独的自链接指向进程信息。其用处就是从进程中获取命令行信息。
o系统信息:假设须要了解整个系统信息中也能够从/proc/stat 中获得。当中包含 CPU 占用情况、磁盘空间、内存对换、中断等。
oCPU 信息:利用/proc/CPUinfo 文件能够获得中央处理器的当前准确信息。
o负载信息:/proc/loadavg 文件包括系统负载信息。
o系统内存信息:/proc/meminfo 文件包括系统内存的具体信息。当中显示物理内存的数量、可用交换空间的数量,以及空暇内存的数量等。
这样。你能够通过cat 命令查看相关信息:
processor&: 0
vendor_id&: GenuineIntel
cpu family&: 6
model&&: 58
model name&: Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
stepping&: 9
microcode&: 0x15
cpu MHz&&:
cache size&: 3072 KB
physical id&: 0
siblings&: 4
core id&&: 0
cpu cores&: 2
apicid&&: 0
——————————————————————
MemTotal:&&&&&&& 3593316 kB
MemFree:&&&&&&&& 2145916 kB
Buffers:&&&&&&&&&& 93372 kB
Cached:&&&&&&&&&& 684864 kB
SwapCached:&&&&&&&&&&& 0 kB
Active:&&&&&&&&&& 706564 kB
Inactive:&&&&&&&& 554052 kB
Active(anon):&&&& 483996 kB
Inactive(anon):&& 178388 kB
Active(file):&&&& 222568 kB
Inactive(file):&& 375664 kB
————————————————————————————————
以下介绍怎样通过python编程的方式获取需求的信息:
#! /usr/bin/env python
#Filename:CPU1.py
from __future__ import print_function
from collections import OrderedDict
import pprint
def CPUinfo():
&&& '''Return the info in /proc/cpuinfo
&&& as a dirctionary in the follow format:
&&& CPU_info['proc0']={...}
&&& CPU_info['proc1']={...}
&&& CPUinfo=OrderedDict()
&&& procinfo=OrderedDict()
&&& nprocs = 0
&&& with open('/proc/cpuinfo') as f:
&&&&&&& for line in f:
&&&&&&&&&&& if not line.strip():
&&&&&&&&&&&&&&& #end of one processor
&&&&&&&&&&&&&&& CPUinfo['proc%s' % nprocs]=procinfo
&&&&&&&&&&&&&&& nprocs = nprocs+1
&&&&&&&&&&&&&&& #Reset
&&&&&&&&&&&&&&& procinfo=OrderedDict()
&&&&&&&&&&& else:
&&&&&&&&&&&&&&& if len(line.split(':')) == 2:
&&&&&&&&&&&&&&&&&&& procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
&&&&&&&&&&&&&&& else:
&&&&&&&&&&&&&&&&&&& procinfo[line.split(':')[0].strip()] = ''
&&& return CPUinfo
if __name__ == '__main__':
&&& CPUinfo = CPUinfo()
&&& for processor in CPUinfo.keys():
&&&&&&& print('CPUinfo[{0}]={1}'.format(processor,CPUinfo[processor]['model name']))
执行例如以下:
CPUinfo[proc0]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
CPUinfo[proc1]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
CPUinfo[proc2]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
CPUinfo[proc3]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
获取内存信息:
#! /usr/bin/env python
#Filename:meminfo.py
from __future__ import print_function
from collections import OrderedDict
def meminfo():
&&& '''return the info of /proc/meminfo
&&& as a dictionary
&&& meminfo = OrderedDict()
&&& with open('/proc/meminfo') as f:
&&&&&&& for line in f:
&&&&&&&&&&& meminfo[line.split(':')[0]] = line.split(':')[1].strip()
&&& return meminfo
if __name__ == '__main__':
&&& meminfo = meminfo()
&&& print(&Total memory:{0}&.format(meminfo['MemTotal']))
&&& print(&Free memory:{0}&.format(meminfo['MemFree']))
结果例如以下:
Total memory:3593316 kB
Free memory:2113712 kB
阅读(...) 评论()使用python获取CPU和内存信息的思路与实现(linux系统)
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了python获取CPU和内存信息的思路与实现,有需要的朋友可以参考一下
大家都知道,linux里一切皆为文件,在linux/unix的根目录下,有个/proc目录,这个/proc 是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:
•进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程信息,其用处就是从进程中获取命令行信息。•系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘空间、内存对换、中断等。•CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。•负载信息:/proc/loadavg 文件包含系统负载信息。•系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空间的数量,以及空闲内存的数量等。
这样,你可以通过cat 命令查看相关信息:
代码如下:liujl@liujl-ThinkPad-Edge-E431:~/mybash$ cat /proc/cpuinfoprocessor&: 0vendor_id&: GenuineIntelcpu family&: 6model&&: 58model name&: Intel(R) Core(TM) i5-3230M CPU @ 2.60GHzstepping&: 9microcode&: 0x15cpu MHz&&: cache size&: 3072 KBphysical id&: 0siblings&: 4core id&&: 0cpu cores&: 2apicid&&: 0
。。。 。。。 代码如下:liujl@liujl-ThinkPad-Edge-E431:~/mybash$ cat /proc/meminfo MemTotal:&&&&&&& 3593316 kBMemFree:&&&&&&&& 2145916 kBBuffers:&&&&&&&&&& 93372 kBCached:&&&&&&&&&& 684864 kBSwapCached:&&&&&&&&&&& 0 kBActive:&&&&&&&&&& 706564 kBInactive:&&&&&&&& 554052 kBActive(anon):&&&& 483996 kBInactive(anon):&& 178388 kBActive(file):&&&& 222568 kBInactive(file):&& 375664 kB
。。 。& 。。。
那下面介绍如何通过python编程的方式获取需求的信息。
1、获取cpu的信息
代码如下:#! /usr/bin/env python#Filename:CPU1.py
from __future__ import print_functionfrom collections import OrderedDictimport pprint
def CPUinfo():&&& '''Return the info in /proc/cpuinfo&&& as a dirctionary in the follow format:&&& CPU_info['proc0']={...}&&& CPU_info['proc1']={...}&&& '''&&& CPUinfo=OrderedDict()&&& procinfo=OrderedDict()
&&& nprocs = 0&&& with open('/proc/cpuinfo') as f:&&&&&&& for line in f:&&&&&&&&&&& if not line.strip():&&&&&&&&&&&&&&& #end of one processor&&&&&&&&&&&&&&& CPUinfo['proc%s' % nprocs]=procinfo&&&&&&&&&&&&&&& nprocs = nprocs+1&&&&&&&&&&&&&&& #Reset&&&&&&&&&&&&&&& procinfo=OrderedDict()&&&&&&&&&&& else:&&&&&&&&&&&&&&& if len(line.split(':')) == 2:&&&&&&&&&&&&&&&&&&& procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()&&&&&&&&&&&&&&& else:&&&&&&&&&&&&&&&&&&& procinfo[line.split(':')[0].strip()] = ''&&& return CPUinfo
if __name__ == '__main__':&&& CPUinfo = CPUinfo()&&& for processor in CPUinfo.keys():&&&&&&& print('CPUinfo[{0}]={1}'.format(processor,CPUinfo[processor]['model name']))
运行如下: 代码如下:liujl@liujl-ThinkPad-Edge-E431:~/mypython$ python CPU1.py CPUinfo[proc0]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHzCPUinfo[proc1]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHzCPUinfo[proc2]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHzCPUinfo[proc3]=Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz
2、获取内存信息 代码如下:#! /usr/bin/env python#Filename:meminfo.py
from __future__ import print_functionfrom collections import OrderedDict
def meminfo():&&& '''return the info of /proc/meminfo&&& as a dictionary&&& '''&&& meminfo = OrderedDict()
&&& with open('/proc/meminfo') as f:&&&&&&& for line in f:&&&&&&&&&&& meminfo[line.split(':')[0]] = line.split(':')[1].strip()&&& return meminfo
if __name__ == '__main__':&&& meminfo = meminfo()
&&& print("Total memory:{0}".format(meminfo['MemTotal']))&&& print("Free memory:{0}".format(meminfo['MemFree']))
结果如下:
代码如下:liujl@liujl-ThinkPad-Edge-E431:~/mypython$ python meminfo.py Total memory:3593316 kBFree memory:2113712 kB
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具1374人阅读
python获取linux系统内存、cpu、网络使用情况
做个程序需要用到系统的cpu、内存、网络的使用情况,百度之后发现目前使用python获取这些信息大多是调用系统命令(top、free等)。其实多linux命令也是读取/proc下的文件实现的,索性不如自己写一个。
一、计算cpu的利用率
要读取cpu的使用情况,首先要了解/proc/stat文件的内容,下图是/proc/stat文件的一个例子:
cpu、cpu0、cpu1……每行数字的意思相同,从左到右分别表示user、nice、system、idle、iowait、irq、softirq。根据系统的不同,输出的列数也会不同,比如ubuntu 12.04会输出10列数据,centos 6.4会输出9列数据,后边几列的含义不太清楚,每个系统都是输出至少7列。没一列的具体含义如下:
user:用户态的cpu时间(不包含nice值为负的进程所占用的cpu时间)
nice:nice值为负的进程所占用的cpu时间
system:内核态所占用的cpu时间
idle:cpu空闲时间
iowait:等待IO的时间
irq:系统中的硬中断时间
softirq:系统中的软中断时间
以上各值的单位都是jiffies,jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在这里我们把它当做单位时间就行。
intr行中包含的是自系统启动以来的终端信息,第一列表示中断的总此数,其后每个数对应某一类型的中断所发生的次数
ctxt行中包含了cpu切换上下文的次数
btime行中包含了系统运行的时间,以秒为单位
processes/total_forks行中包含了从系统启动开始所建立的任务个数
procs_running行中包含了目前正在运行的任务的个数
procs_blocked行中包含了目前被阻塞的任务的个数
由于计算cpu的利用率用不到太多的值,所以截图中并未包含/proc/stat文件的所有内容。
知道了/proc文件的内容之后就可以计算cpu的利用率了,具体方法是:先在t1时刻读取文件内容,获得此时cpu的运行情况,然后等待一段时间在t2时刻再次读取文件内容,获取cpu的运行情况,然后根据两个时刻的数据通过以下方式计算cpu的利用率:100 - (idle2 - idle1)*100/(total2 - total1),其中total = user + system + nice + idle + iowait + irq + softirq。python代码实现如下:
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
readCpuInfo():
&&&&&&&&&&&
= open('/proc/stat')
&&&&&&&&&&&
= f.readlines();
&&&&&&&&&&&
&&&&f.close()
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&line
= line.lstrip()
&&&&&&&&&&&
&&&&&&&&counters
= line.split()
&&&&&&&&&&&
&&&&&&&&if
len(counters) &
&&&&&&&&&&&
&&&&&&&&&&&&continue
&&&&&&&&&&&
&&&&&&&&if
counters[0].startswith('cpu'):
&&&&&&&&&&&
&&&&&&&&&&&&break
&&&&&&&&&&&
&&&&&&&&&&&
len(counters)):
&&&&&&&&&&&
&&&&&&&&total
+ long(counters[i])
&&&&&&&&&&&
= long(counters[4])
&&&&&&&&&&&
&&&&return
{'total':total,
'idle':idle}
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
calcCpuUsage(counters1, counters2):
&&&&&&&&&&&
= counters2['idle']
- counters1['idle']
&&&&&&&&&&&
= counters2['total']
- counters1['total']
&&&&&&&&&&&
&&&&return
(idle*100/total)
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
__name__ ==
'__main__':
&&&&&&&&&&&
&&&&counters1
= readCpuInfo()
&&&&&&&&&&&
&&&&time.sleep(0.1)
&&&&&&&&&&&
&&&&counters2
= readCpuInfo()
&&&&&&&&&&&
calcCpuUsage(counters1, counters2):
二、计算内存的利用率
计算内存的利用率需要读取的是/proc/meminfo文件,该文件的结构比较清晰,不需要额外的介绍,需要知道的是内存的使用总量为used = total - free - buffers - cached,python代码实现如下:
readMemInfo():
= {'total':0,
'buffers':0,
'cached':0}
= open('/proc/meminfo')
= f.readlines()
&&&&f.close()
&&&&&&&&if
&&&&&&&&&&&&break
&&&&&&&&line
= line.lstrip()
&&&&&&&&memItem
= line.lower().split()
&&&&&&&&if
memItem[0]
'memtotal:':
&&&&&&&&&&&&res['total']
= long(memItem[1])
&&&&&&&&&&&&i
&&&&&&&&&&&&continue
&&&&&&&&elif
memItem[0]
'memfree:':
&&&&&&&&&&&&res['free']
= long(memItem[1])
&&&&&&&&&&&&i
&&&&&&&&&&&&continue
&&&&&&&&elif
memItem[0]
'buffers:':
&&&&&&&&&&&&res['buffers']
= long(memItem[1])
&&&&&&&&&&&&i
&&&&&&&&&&&&continue
&&&&&&&&elif
memItem[0]
'cached:':
&&&&&&&&&&&&res['cached']
= long(memItem[1])
&&&&&&&&&&&&i
&&&&&&&&&&&&continue
&&&&return
calcMemUsage(counters):
= counters['total']
- counters['free']
- counters['buffers']
- counters['cached']
= counters['total']
&&&&return
used*100/total
__name__ ==
'__main__':
&&&&counters
= readMemInfo()
calcMemUsage(counters)
三、获取网络的使用情况
获取网络使用情况需要读取的是/proc/net/dev文件,如下图所示,里边的内容也很清晰,不做过的的介绍,直接上python代码,取的是eth0的发送和收取的总字节数:
readNetInfo(dev):
= open('/proc/net/dev')
= f.readlines()
&&&&f.close()
= {'in':0,
&&&&&&&&if
line.lstrip().startswith(dev):
&&&&&&&&&&&&
&&&&&&&&&&&&line
= line.replace(':',
&&&&&&&&&&&&items
= line.split()
&&&&&&&&&&&&res['in']
= long(items[1])
&&&&&&&&&&&&res['out']
= long(items[len(items)/2
&&&&return
__name__ ==
'__main__':
readNetInfo('eth0')
四、获取网卡的ip地址和主机的cpu个数
这两个函数是程序的其它地方需要用到,就顺便写下来:
getIpAddress(dev):
= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
= s.fileno()
= struct.pack('256s', dev[:15])
= fcntl.ioctl(a, b, c)[20:24]
&&&&return
socket.inet_ntoa(res)
getCpuCount():
= open('/proc/cpuinfo')
= f.readlines()
&&&&f.close()
&&&&&&&&line
= line.lower().lstrip()
&&&&&&&&if
line.startswith('processor'):
&&&&&&&&&&&&res
&&&&return
__name__ ==
'__main__':
getCpuCount()
getIpAddress('eth0')
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:260873次
积分:3243
积分:3243
排名:第10794名
转载:333篇
(4)(7)(4)(42)(20)(37)(5)(24)(17)(48)(64)(45)(19)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'如何使用Python动态控制Linux系统的内存占用百分比?
如何使用Python动态控制Linux系统的内存占用百分比?
& & & &近期有网上朋友寻求帮助:如何通过脚本动态控制Linux系统的内存占用百分比?经过一番百度+编写调试,终于初步完成了动态控制Linux系统内存占用百分比。现写出来以帮助更多的朋友。
& & & & 根据需求是动态控制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()
申请后如下图所示:
从上述两幅图中可以看出,申请内存前内存占用295MB,申请后内存占用397MB,增加了约100MB内存占用。
3 内存动态释放
& & & &由于Python对内存是有垃圾回收机制的,采用对象引用计数方式。当对象的引用计数为0时,启动垃圾回收GC。此处内存动态释放就是使用该原理。
代码如下:
&&& mem=None
释放后内存占用如下图所示:
内存占用由397MB降低到297MB,释放了100MB内存占用。
说明:将None赋值给对象mem后,mem对象的引用计数即为0,此时垃圾回收启动,释放mem对象占用的内存。
4 系统总内存、占用内存检测
& & & &由于需要设定内存占用百分比,故需要获取系统总物理内存和占用内存。本文使用的方法是读取系统文件“/proc/meminfo”,从中解析出总内存大小以及当前内存占用大小等内存相关的信息。该文件内容格式如下图所示:
代码片段如下所示:
open&/proc/meminfo&&
freadlines&
&&& fclose&
&&& for line
&&&&&&& if lenline
2continue&
&&&&&&& name
linesplit':'0&
&&&&&&& var
linesplit':'1split0&
&&&&&&& memname longvar
&&& mem'MemUsed' mem'MemTotal'
mem'MemFree'
说明:按行读取meminfo文件内容,创建字典对象mem,将meminfo文件第一列设置为mem对象的键值,将meminfo文件第二列数字设置为mem对象的值。
5 获取用户输入百分比
& & & &通过读取键盘输入字符串,然后转换为数字实现接收用户输入的百分比,代码如下所示:
input_str=raw_input(&Input UsedMemory`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%为止。如下图所示:
内存申请过程如下图所示:
内存申请过程中占用百分比变化为:35%,45%,56%,70%,…
mem_rate.py运行过程如下图所示:
内存申请过程中占用变化为:1461MB,1471MB,1481MB,1491MB。
此时如果内存占用百分比设置为20%,则需要释放一部分内存。
test.py脚本运行过程如下图所示:
由于释放内存运行较快,抓取到最后结果
内存占用为20%。
mem_rate.py脚本运行过程如下图所示:
内存释放过程中内存占用为:413MB,403MB,393MB,383MB,最后内存占用稳定在20%,383MB。
输入“q”或“Q”退出内存占用百分比设定过程,如下图所示:
此时内存占用如下图所示:
内存占用恢复到运行mem_rate.py脚本之前状态,17%,321MB。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
附:完整Python脚本代码
------------------------------------------------------------------------------------------------
#!/usr/bin/python2.6
memory_stat&
open&/proc/meminfo&&
freadlines&
&&& fclose&
&&& for line
&&&&&&& if lenline
2continue&
&&&&&&& name
linesplit':'0&
&&&&&&& var
linesplit':'1split0&
&&&&&&& memname longvar
&&& mem'MemUsed' mem'MemTotal'
mem'MemFree'
&&& # - mem['Buffers']- mem['Cached']&
&&& return mem
memmemory_stat
print&Used(MB):%d&longmem'MemUsed'10241024
print&Rate:%d%%&100longmem'MemUsed'floatmem'MemTotal'
§§§§§§§§§§§§§§§§§§§§§§§§§§
mem_rate.py
---------------------------------------------------
#!/usr/bin/python2.6
from ctypes
# Get Memory Info(Total, Used... Byte)
get_memory_stat&
open&/proc/meminfo&&
freadlines&
&&& fclose&
&&& for line
&&&&&&& if lenline
2continue&
&&&&&&& name
linesplit':'0&
&&&&&&& var
linesplit':'1split0&
&&&&&&& memname longvar
&&& mem'MemUsed' mem'MemTotal'
mem'MemFree'
&&& # Return MemroyInfo Object
&&& return mem
# Get Simple Memory Info
get_memory_infomem
&&& # Byte -& MB
&&& usedfloatmem'MemUsed'
&&& totalfloatmem'MemTotal'
&&& rateusedtotal
&&& smp'used'used'total'total'rate'rate
&&& return smp
# Display Current Memory Info
print_memory_infomem
&&& # Get SimpleMemory Info
&&& smpget_memory_infomem
&&& print&Used(MB):%d\tTotal(MB):%d\tUsedRate:%d%%&smp'used'
smp'total' smp'rate'
# Get Rate Of Memory Used To Be Setted(Integer Formate)
input_memory_used_rateorg_rate
&&& # Byte -& MB
&&& whileTrue
&&&&&&& memget_memory_stat
&&&&&&&print_memory_infomem
&&&&&&& input_strraw_input&Input UsedMemory`s Rate or q to exit:&
&&&&&&& ifleninput_str
&&&&&&&&&&& continue
&&&&&&& if&q& input_str
&&&&&&&&&&& info'rate'0'used'mem'MemUsed'
&&&&&&&&&&& return info
&&&&&&& if&Q& input_str
&&&&&&&&&&& info'rate'0'used'mem'MemUsed'
&&&&&&&&&&& return info
&&&&&&& try
&&&&&&&&&&& ratefloatinput_str
&&&&&&&&&&& ifrateorg_rateand
&&&&&&&&&&&&&&&info'rate'rate'used'mem'MemUsed'
&&&&&&&&&&&&&&& return info
&&&&&&&&&&& else
&&&&&&&&&&&&&&& print&Please inputa valid number(%d%%~95%%).&org_rate
&&&&&&& except
&&&&&&&&&&& print&Please inputa valid number(%d%%~95%%).&org_rate&&&&
# Set Rate Of Memory Used
set_memory_used_ratenew_rate total pre_usedlist
&&& ifnew_rate0
&&&&&&& return
&&& dest_memtotal new_rate
&&& # 10MB
&&& n_chg10
&&& # Free Memory OrAllocate Memory ?
&&& is_newdest_mempre_used
&&& cur_usedpre_used
&&& whileTrue
&&&&&&& # To Calc FreeMemory Or Allocate Memory ?
&&&&&&& need_newdest_memn_chgpre_used
&&&&&&& need_deldest_memn_chgpre_used
&&&&&&& # Need To AllocateMemory
&&&&&&& ifis_new
&&&&&&&&&&& ifneed_new
&&&&&&&&&&&&&&& pcreate_string_buffermb10
&&&&&&&&&&&&&&&listappendp
&&&&&&&&&&&&&&&dest_memdest_memn_chg
&&&&&&&&&&&&&&&cur_usedcur_usedn_chg
&&&&&&&&&&& else
&&&&&&&&&&&&&&& return&end&
&&&&&&& # Need To FreeMemory
&&&&&&& else
&&&&&&&&&&& idxlenlist1
&&&&&&&&&&& ifneed_deland
&&&&&&&&&&&&&&& plistidx
&&&&&&&&&&&&&&& del listidx
&&&&&&&&&&&&&&& pNone
&&&&&&&&&&&&&&&dest_memdest_memn_chg
&&&&&&&&&&&&&&&cur_usedcur_usedn_chg
&&&&&&&&&&& else
&&&&&&&&&&&&&&& return&end&
&&&&&&& print&****** MemoryUsed(MB):%d&cur_used
# Entry Of Program
# List Of Memory Object, 10MB Of One Object
# Get Current Memory Info
memget_memory_stat
# Get Simple Memory Info
smpget_memory_infomem
org_ratesmp'rate'
totalsmp'total'
&&& # Get Rate OfMemory To Be Used
&&& infoinput_memory_used_rateorg_rate
&&& new_ratefloatinfo'rate'
&&& pre_usedfloatinfo'used'
&&& # Set Rate OfMemory To Be Used
&&& rtnset_memory_used_ratenew_rate total
pre_used list
&&& ifnot rtn
&&&&&&& print&bye!&
&&&&&&& exit
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?}

我要回帖

更多关于 win7系统内存占用过高 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信