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
  • 相关阅读:
    第二章
    第一章
    unity--实现新手引导功能
    golang MissingContentLength error
    遇到一个golang time.Tick的坑
    grpc client连接池及负载均衡实现
    Pytorch学习-线性回归
    Pytorch学习-自动求导
    Pytorch学习-线性代数实现
    天池Python训练营笔记—Python基础进阶:从函数到高级魔法方法
  • 原文地址:https://www.cnblogs.com/aslongas/p/5871102.html
Copyright © 2011-2022 走看看