zoukankan      html  css  js  c++  java
  • python获取每颗cpu使用率

    以下是关于python来获取服务器每颗CPU使用率的使用脚本。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import re,time 
    
    def _read_cpu_usage(): 
            """Read the current system cpu usage from /proc/stat""" 
            statfile = "/proc/stat" 
            cpulist = [] 
            try: 
                    f = open(statfile, 'r') 
                    lines = f.readlines() 
            except: 
                    print "ERROR: Can not open %s,The system cannot continue to run" % (statfile) 
                    return [] 
            for line in lines:
                tmplist = line.split()
                if len(tmplist) < 5:
                    continue
                for b in tmplist:
                     m = re.search(r'cpud+',b)
                     if m is not None:
                        cpulist.append(tmplist)
            f.close()
            return cpulist
    
    def get_cpu_usage(): 
            cpuusage = {} 
            cpustart = {} 
            cpuend = {} 
            linestart = _read_cpu_usage() 
            if not linestart: 
                    return 0 
            for cpustr in linestart: 
                    usni=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])+long(cpustr[5])+long(cpustr[6])+long(cpustr[7])+long(cpustr[4]) 
                    usn=long(cpustr[1])+long(cpustr[2])+long(cpustr[3]) 
                    cpustart[cpustr[0]] = str(usni)+":"+str(usn) 
            sleep = 2 
            time.sleep(sleep) 
            lineend = _read_cpu_usage() 
            if not lineend: 
                    return 0 
            for cpustr in lineend: 
                    usni=long(cpustr[1])+long(cpustr[2])+long(cpustr[3])+long(cpustr[5])+long(cpustr[6])+long(cpustr[7])+long(cpustr[4]) 
                    usn=long(cpustr[1])+long(cpustr[2])+long(cpustr[3]) 
                    cpuend[cpustr[0]] = str(usni)+":"+str(usn) 
            for line in cpustart: 
                    start = cpustart[line].split(':') 
                    usni1,usn1 = float(start[0]),float(start[1]) 
                    end = cpuend[line].split(':') 
                    usni2,usn2 = float(end[0]),float(end[1]) 
                    cpuper=(usn2-usn1)/(usni2-usni1) 
                    cpuusage[line] = int(100*cpuper) 
             
            return cpuusage 
    
    if __name__ == '__main__': 
            a = get_cpu_usage() 
            print a
  • 相关阅读:
    团队项目-典型用户及用户场景分析
    课堂小练习-找“水王”
    课堂小练习—电梯
    团队项目—用户需求调研报告
    课堂小练习
    团队项目的NABC
    梦断代码—随笔三
    梦断代码—随笔二
    结对开发5_循环二维数组最大字数组
    结对开发4_循环数组的最大值
  • 原文地址:https://www.cnblogs.com/aslongas/p/5871102.html
Copyright © 2011-2022 走看看