• 性能测试培训: 监控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:\rootcimv2")

            

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

  • 相关阅读:
    PAT1092:To Buy or Not to Buy
    PAT1027:Colors In Mars
    PAT1099:Build A Binary Search Tree
    PAT1064: Compelte Binary Search Tree
    PAT1008:Elevator
    TP5整合 WorkerMan 以及 GatewayWorker
    ThinkPHP5通过composer安装Workerman安装失败问题
    浏览器控制台
    webpack线上和线下模式
    PHP读取文件夹目录,按时间排序,大小排序,名字排序
  • 原文地址:https://www.cnblogs.com/poptest/p/4920516.html
Copyright © 2020-2023  润新知