性能测试培训: 监控CPU之python

性能测试培训: 监控CPU之python

     作为一名测试开发工程师,开发脚本是为了测试服务的,我们在手里没有性能监控工具的情况下,我们会自己来进行开发脚本完成监控任务。下面是python监控cpu

'''

Created on 2015-10-20

 

@author:laoli

'''

#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()

转载于:https://www.cnblogs.com/poptest/p/4920516.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值