python和bash統計CPU利用率的方法

來源:互聯網
上載者:User
本文執行個體講述了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 5cpu_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))doneidle_a=${cpu_a[4]}sleep 5cpu_b=(`grep 'cpu ' /proc/stat`)for i in ${cpu_b[@]:1}do  total_b=$(($total_b+$i))doneidle_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程式設計有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.