博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
性能测试培训: 监控CPU之python
阅读量:4519 次
发布时间:2019-06-08

本文共 1978 字,大约阅读时间需要 6 分钟。

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

你可能感兴趣的文章
LeetCode--Reverse Integer
查看>>
PHP_APC+Ajax实现的监视进度条的文件上传
查看>>
计算机网络课堂笔记3.29
查看>>
word2vec----CBOW
查看>>
衰减学习率真的有用吗?
查看>>
ORACLE 建库过程总结
查看>>
Ogre1.8.1 Basic Tutorial 6 - The Ogre Startup Sequence
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(36)-文章发布系统③-kindeditor使用...
查看>>
c# Winform 开发分屏显示应用程序
查看>>
canvas刮奖
查看>>
qt下拖放(一)
查看>>
Linux后台运行python程序并输出到日志文件
查看>>
HTML的语义化和一些简单优化
查看>>
jQuery基础教程
查看>>
Spring 在xml文件中配置Bean
查看>>
poj1611(简答并查集)
查看>>
基于scap的服务器安全基线核查设计与实现
查看>>
NFS 安装与配置
查看>>
javascript 模拟滚动 隐藏滚动条
查看>>
深度探索C++对象模型读书笔记(2)
查看>>