首页 > 其他 > 详细

获取每颗cpu使用率

时间:2016-09-14 12:49:05      阅读:150      评论:0      收藏:0      [点我收藏+]

以下是关于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(rcpu\d+,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

 

获取每颗cpu使用率

原文:http://www.cnblogs.com/aslongas/p/5871102.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!