python采集cpu信息
生活随笔
收集整理的這篇文章主要介紹了
python采集cpu信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
舊博文,搬到 csdn
原文:http://rebootcat.com/2018/05/20/analyze_cpu/
python腳本采集cpu
經常要做一些 linux 系統(tǒng)上的性能分析或者采集 cpu/mem/bandwidth 上報到監(jiān)控系統(tǒng)。
分享一個我平常常用到的 cpu 采集腳本,原理是分析 /proc/stat 文件, 腳本如下:
#!/usr/bin/env python
# -*- coding:utf8 -*-import time
import copyclass CpuWatch(object):def __init__(self, time_step):self.cpufile_ = '/proc/stat'self.watch_time_step_ = time_step # 60 sreturn# 采集cpu信息def read_cpu(self):cpu_info = {}cpufile = self.cpufile_with open(cpufile, 'r') as fin:for line in fin:line_fields = line.split()if line_fields[0] != "cpu":continuetotal = 0for field in line_fields:if field == "cpu":continuetotal += int(field)cpu_info = {"User": int(line_fields[1]),"Sys": int(line_fields[3]),"Idle": int(line_fields[4]),"Steal": int(line_fields[8]),"Wait": int(line_fields[5]),"Total": total}fin.close()return cpu_infodef get_avg_cpu(self, cpu_info_old, cpu_info):if not cpu_info_old or not cpu_info:return Noneresult = {}if set(cpu_info.keys()) != set(cpu_info_old.keys()):return Nonedelta_total = cpu_info["Total"] - cpu_info_old["Total"]delta_user = cpu_info["User"] - cpu_info_old["User"]delta_sys = cpu_info["Sys"] - cpu_info_old["Sys"]delta_idle = cpu_info["Idle"] - cpu_info_old["Idle"]delta_wait = cpu_info["Wait"] - cpu_info_old["Wait"]delta_steal = cpu_info["Steal"] - cpu_info_old["Steal"]last_cpu_info = cpu_inforesult = {"cpu_user": int(float(delta_user)/float(delta_total) * 100),"cpu_sys": int(float(delta_sys)/float(delta_total) * 100),"cpu_wait": int(float(delta_wait)/float(delta_total) * 100),"cpu_steal": int(float(delta_steal)/float(delta_total) * 100),"cpu_idle": int(float(delta_idle)/float(delta_total) * 100),"cpu_util": int(float(delta_total - delta_idle - delta_wait - delta_steal)/float(delta_total) * 100)}print(result)return resultdef run(self):cpu_info_old = {}while True:if not cpu_info_old:cpu_info_old = self.read_cpu()time.sleep(self.watch_time_step_)cpu_info = self.read_cpu()result = self.get_avg_cpu(cpu_info_old, cpu_info)cpu_info_old = copy.deepcopy(cpu_info)if __name__ == '__main__':cpu_watcher = CpuWatch(time_step = 5)cpu_watcher.run()
腳本可以直接在 我的github 進行下載。
其他
歡迎關注下我的其他腳本,平常可能會用到的一些腳本,整理了一下。
https://github.com/smaugx/dailytools
Blog:
-
rebootcat.com
-
email: linuxcode2niki@gmail.com
2018-05-20 于杭州
By 史矛革
總結
以上是生活随笔為你收集整理的python采集cpu信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一键安装python3环境
- 下一篇: python采集bandwidth信息