码迷,mamicode.com
首页 > 编程语言 > 详细

Python & Ubuntu 获取进程信息

时间:2016-04-06 09:27:37      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

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

 

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

技术分享

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~

Python & Ubuntu 获取进程信息

标签:

原文地址:http://www.cnblogs.com/shouce/p/5357726.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!