备忘,其实是想知道该进程使用的内存状况。
首先要获取系统的内存信息:
defmemory_stat():
'''
returnthememoryinfo
'''
mem={}
stat={}
f=open('/proc/meminfo')
lines=f.readlines()
forlineinlines:
iflen(line)<2:continue
name=line.split(':')[0]
var=line.split(':')[1].split()[0]
mem[name]=long(var)*1024.0
stat['MemUsed']=mem['MemTotal']-mem['MemFree']-mem['Buffers']-mem['Cached']
stat['MemTotal']=mem['MemTotal']
stat['MemFree']=mem['MemFree']
stat['Buffers']=mem['Buffers']
stat['Cached']=mem['Cached']
returnstat
因为我下面使用的方法来获取的进程信息,只能知道该进程占内存的百分比。所以必须先获取内存的总量。
接下来定义一个获取进程信息的函数。
defproc_stat(procid):
importcommands
ps_stat=None
try:
#获取进程的内存信息
ps_stat=commands.getoutput('ps-fp%s-u'%procid).split('\n')[2].split()
except:
return{}
procInfo={}
procInfo['PID']=procid
#这里调用了刚才定义的memory_stat获取内存总量,
#然后乘以该进程所占内存的百分比,即为内存使用量
procInfo['MemoryUsed']=memory_stat()['MemTotal']*float(ps_stat[3])/100
procInfo['Start']=ps_stat[8]
procInfo['StartCommand']=ps_stat[10]
returnprocInfo
接着使用 ipython ,测试 ,先开一个 python 进程 ,假设进程ID为2168,则:
fromMachineInfoimportproc_stat
ps=proc_stat(2168)
ps
{'MemoryUsed':3650289.6639999999,#这里是以byte为单位,也可以自己进行转换
'PID':2168,
'Start':'21:56',
'StartCommand':'python'}
记录完毕。Over~