文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Python & Ubuntu 获取进程信息

Python & Ubuntu 获取进程信息

时间:2010-09-28  来源:兴说:

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

 

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


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~

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载