python监控cpu

'''
Created on 2011-11-3

@author: caojiaju
'''
#from sshExpert import sshExpert

import time
import os,sys,platform
class cpuMonitor:
    def __init__(self):
        return
    def getCpu(self):
        sysName = platform.system()
        if sysName == 'Windows':
            return self.getWinCpu()
        else:
            return self.getLinuxCpu()
        return
    def getWinCpu(self):
        import win32com.client 
        com=win32com.client.Dispatch("WbemScripting.SWbemRefresher")
        obj=win32com.client.GetObject("winmgmts:\\root\cimv2")
         
        processorItems=com.AddEnum(obj,"Win32_PerfFormattedData_PerfOS_Processor").objectSet
            
        while(1):
            com.Refresh()
            for item in processorItems:
                if item.Name == '_Total':
                #print item.Name,"= ",
                    #print 'total=',item.PercentProcessorTime,"%"
                    return item.PercentProcessorTime
                #time.sleep(5)
            break
      
    def _read_cpu_usage(self):   
        """Read the current system cpu usage from /proc/stat."""  
        try:   
            fd = open("/proc/stat", 'r')   
            lines = fd.readlines()   
        finally:   
            if fd:   
                fd.close()   
        for line in lines:   
            l = line.split()   
            if len(l) < 5:   
                continue  
            if l[0].startswith('cpu'):   
                return l   
        return []   
      
    def getLinuxCpu(self):   
        """  
        get cpu avg used by percent  
        """  
        cpustr=self._read_cpu_usage()   
        if not cpustr:   
            return 0  
        #cpu usage=[(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100   
        usni1=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])+long(cpustr[5])+long(cpustr[6])+long(cpustr[7])+long(cpustr[4])   
        usn1=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])   
        #usni1=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])+long(cpustr[4])   
        # self.sleep=2   
        time.sleep(self.sleep)   
        cpustr=self._read_cpu_usage()   
        if not cpustr:   
            return 0  
        usni2=long(cpustr[1])+long(cpustr[2])+float(cpustr[3])+long(cpustr[5])+long(cpustr[6])+long(cpustr[7])+long(cpustr[4])   
        usn2=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])   
        cpuper=(usn2-usn1)/(usni2-usni1)   
        return 100*cpuper
def main():
    aaa = cpuMonitor()
    print aaa.getCpu()

if __name__ == '__main__':
    main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值