码迷,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

{
MemoryUsed3650289.6639999999#这里是以 byte 为单位,也可以自己进行转换
 PID2168,
 
Start21:56,
 
StartCommandpython}
技术分享

 

 

记录完毕。Over~

Python & Ubuntu 获取进程信息

标签:

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

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