程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> Python & Ubuntu 獲取進程信息

Python & Ubuntu 獲取進程信息

編輯:Python

備忘,其實是想知道該進程使用的內存狀況。

 

首先要獲取系統的內存信息:

復制代碼
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~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved