Python & Ubuntu 获取进程信息

备忘,其实是想知道该进程使用的内存状况。

 

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


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~

posted on 2010-09-28 13:01  兴说:  阅读(3408)  评论(0编辑  收藏