您的位置:首页 > 编程语言 > Python开发

Python & Ubuntu 获取进程信息

2010-09-28 13:01 447 查看
备忘,其实是想知道该进程使用的内存状况。

首先要获取系统的内存信息:

def memory_stat():
'''
return the memory info
'''
mem = {}
stat = {}
f = open('/proc/meminfo')
lines = f.readlines()
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
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']
return stat

因为我下面使用的方法来获取的进程信息,只能知道该进程占内存的百分比。所以必须先获取内存的总量。

接下来定义一个获取进程信息的函数。

def proc_stat(procid):
import commands
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]

return procInfo

接着使用 ipython ,测试 ,先开一个 python 进程 ,假设进程ID为2168,则:

from MachineInfo import proc_stat

ps = proc_stat(2168)

ps

{'MemoryUsed': 3650289.6639999999, #这里是以 byte 为单位,也可以自己进行转换
'PID': 2168,
'Start': '21:56',
'StartCommand': 'python'}

记录完毕。Over~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: