zoukankan      html  css  js  c++  java
  • 性能测试培训: 监控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()

  • 相关阅读:
    百度地图开发 InfoBox 弹出消息框使用详解!某物流网应用
    百度地图api画圆 标注 搜索周边功能
    有用的linux操作命令
    php后台守护进程 sh脚本 三个文件 让您的后台php永不止步
    CLR via C# 第二章 (1)
    CLR via C# 第一章 (2)
    CLR via C# 第一章(3)
    ios 画图总结
    简析 iOS 程序图标的设计
    10个必需的iOS开发工具和资源 http://coolshell.cn/articles/5089.html
  • 原文地址:https://www.cnblogs.com/poptest/p/4920516.html
Copyright © 2011-2022 走看看