A5下载站:努力做内容最丰富最安全的下载站! 网站地图最新更新下载排行专题软件发布

热门软件

地铁跑酷

冒险迷岛

全民迷宫

连连消大作战

小河狸创客

阿里健康医鹿

支付宝app

番薯小说

MOMO陌陌

虾米音乐app

位置导航:A5下载 > 源码技巧 > 父类数据

python和bash统计CPU利用率的方法

时间:2015-07-10 15:26来源:a5源码作者:zhao浏览:52
这篇文章主要介绍了python和bash统计CPU利用率的方法,涉及Python针对系统硬件信息的读取技巧,具有一定参考借鉴价值,需要的朋友可以参考下……

本文实例讲述了python和bash统计CPU利用率的方法。分享给大家供大家参考。具体如下:

开始的时候写了一个 bash 的实现;

因为最近也在学习 python ,所以就尝试着用 python 再实现一回;

支援 python2 环境;

请各位给予下建议,有什么改良的地方可以提一下,不甚感激;

Python代码如下:

#!/usr/bin/python

# -*- coding:utf8 -*-

__author__ = 'chenwx'

def cpu_rate():

import time

def cpu_r():

f = open("/proc/stat","r")

for f_line in f:

break

f.close()

f_line = f_line.split(" ")

f_line_a=[]

for i in f_line:

if i.isdigit():

i=int(i)

f_line_a.append(i)

total = sum(f_line_a)

idle = f_line_a[3]

return total,idle

total_a,idle_a=cpu_r()

time.sleep(2)

total_b,idle_b=cpu_r()

sys_idle = idle_b - idle_a

sys_total = total_b - total_a

sys_us = sys_total - sys_idle

cpu_a = (float(sys_us)/sys_total)*100

return cpu_a

# print cpu_rate()

bash的实现方式:

#!/bin/bash

# 感觉计算数组这里应该还有办法简化的吧;

# 我一时没想到,请大家提一下建议,多谢;

cpu_a=(`grep 'cpu ' /proc/stat`)

total_a=$((${cpu_a[1]}+${cpu_a[2]}+${cpu_a[3]}+${cpu_a[4]}+${cpu_a[5]}+${cpu_a[6]}+${cpu_a[7]}+${cpu_a[8]}+${cpu_a[9]}))

idle_a=${cpu_a[4]}

sleep 5

cpu_b=(`grep 'cpu ' /proc/stat`)

total_b=$((${cpu_b[1]}+${cpu_b[2]}+${cpu_b[3]}+${cpu_b[4]}+${cpu_b[5]}+${cpu_b[6]}+${cpu_b[7]}+${cpu_b[8]}+${cpu_b[9]}))

idle_b=${cpu_b[4]}

sys_idle=$(($idle_b-$idle_a))

sys_total=$(($total_b-$total_a))

sys_us=$(($sys_total-$sys_idle))

echo "scale=2;$sys_us/$sys_total*100" | bc

遍历数组的方法:

# 找到了解决数组计算的办法了,不过感觉for循环计算的方式还是有些繁琐;

# 不知道有没有那种对数组内所有值一并计算的方法;

cpu_rate_a () {

cpu_a=(`grep 'cpu ' /proc/stat`)

for i in ${cpu_a[@]:1}

do

total_a=$(($total_a+$i))

done

idle_a=${cpu_a[4]}

sleep 5

cpu_b=(`grep 'cpu ' /proc/stat`)

for i in ${cpu_b[@]:1}

do

total_b=$(($total_b+$i))

done

idle_b=${cpu_b[4]}

sys_idle=$(($idle_b-$idle_a))

sys_total=$(($total_b-$total_a))

sys_us=$(($sys_total-$sys_idle))

local_cpu_rate=$(echo "scale=2;$sys_us/$sys_total*100" | bc)

}

希望本文所述对大家的Python程序设计有所帮助。