天天看點

Python CPU,記憶體實時擷取Update

很多時候,我們需要用Python監控機器的CPU,記憶體,以下是代碼。

使用前請安裝psutil包

#Python 3.x
#Get CPU and RAM
import psutil
import time


def getCPU():
    return str(psutil.cpu_percent())

def getMem():
    return str(psutil.virtual_memory()).split(",")[].split("=")[]
def pd(cpuz,memz):
    if cpuz>:
        if memz>:
            return ,
        else:
            return ,
    else:
        if memz>:
            return ,
        else:
            return ,


def MainRun():
    while True:
        a=getCPU()
        b=getMem()
        p1,p2=pd(float(a),float(b))

        if p1==:
            memr="過高"
        else:
            memr="正常"
        if p2==:
            cpur="過高"
        else:
            cpur="正常"
        print("CPU:%s   RAM:%s   [CPU:%s RAM:%s]"%(a,b,cpur,memr))

        time.sleep()
MainRun()
           

其中我把CPU的‘過高’設定在55%以上,記憶體是根據我機器的6G記憶體設定的,請根據自己的需要調整,特别是記憶體

#######代碼分析#######

return str(psutil.cpu_percent())
           

這個函數将會傳回的是CPU的百分比(類型為String)

return str(psutil.virtual_memory()).split(",")[].split("=")[]
           

首先看其中的

psutil.virtual_memory()

,他将會傳回一個類似這樣的清單:

.split(",")

的作用就是用”,”切分字元串并傳回一個清單,他大概是這樣的

['svmem(total=', ' available=', ' percent=', ' used=', ' free=)']
           

[3]的作用是提取其中的第四個元素,也就是used(已使用記憶體)

随後再一次的

.split("=")

不過注意,這次使用”=”,傳回類似這樣

[' used', '']
           

顯然,我們要提取的是’2620174336’,也就是第二個元素,那麼直接用[1]傳回’2620174336’

Update

2016-04-14

本文釋出

2016-04-15

目前正在加入記憶體百分比判别的功能