python实时监控cpu小工具


Posted in Python onJune 21, 2018

本文实例为大家分享了python实时监控cpu的工具,供大家参考,具体内容如下

虽然写的很不完善,但是当练手吧,对于实时监控cpu还是有点用处的,虽然android studio已经提供了一样的功能,但是能够记录并生成成本地csv文件还是比as多一个功能的。

结果图:

python实时监控cpu小工具

python实时监控cpu小工具

直接放源码:

# !_*_coding:utf-8_*_

import re
import os
import wx
import thread
import pychartdir
import csv

class GetCpuStats():

  def __init__(self, name):
    self.pro_name = name

  def startWatch(self):
    _shell = 'adb shell top -s cpu -n 1| findstr %s' % self.pro_name
    result = os.popen(_shell).read()
    return self.getInfo(result)

  def getInfo(self, _result):
    return [re.findall('(\d+)%', _result), re.findall('K\s(\d+)K', _result)]

class MyFrame(wx.Frame):

  flag = False
  _label = []
  _data = []
  _label02 = []
  _data02 = []
  num = 0
  num02 = 0

  def __init__(self):
    wx.Frame.__init__(self, parent=None, title=u'cpu检测小工具', pos=(700, 100), size=(500, 500))
    mPanel = wx.Panel(parent=self)
    mSizer = wx.BoxSizer(orient=wx.VERTICAL)
    btn_start = wx.Button(parent=mPanel, label=u'开始', style=wx.EXPAND)
    mSizer.Add(btn_start)
    btn_stop = wx.Button(parent=mPanel, label=u'停止', style=wx.EXPAND)
    mSizer.Add(btn_stop)
    self.edit = wx.TextCtrl(parent=mPanel,style=wx.EXPAND,value=u'这里输入测试的包名')
    mSizer.Add(self.edit,flag=wx.EXPAND)
    self.edit.Bind(event=wx.EVT_CHOICE, handler=self.requestFocus)
    self.bitmap_cpu = wx.StaticBitmap(parent=mPanel)
    mSizer.Add(self.bitmap_cpu, flag=wx.EXPAND) 
    #self.bitmap_mem = wx.StaticBitmap(parent=mPanel)
    #mSizer.Add(self.bitmap_mem, flag=wx.EXPAND)   
    mPanel.SetSizer(mSizer)
    mPanel.Fit()
    btn_start.Bind(event=wx.EVT_BUTTON, handler=self.startWatch)
    btn_stop.Bind(event=wx.EVT_BUTTON, handler=self.stopWatch)

  def requestFocus(self,event):
    self.edit.SetValue("")

  def startWatch(self, event): 
    self.flag = True
    thread.start_new_thread(self.getInfo, ())

  def stopWatch(self, event):
    self.flag = False

  def getInfo(self):
    while(self.flag):
      _result = GetCpuStats(self.edit.GetValue()).startWatch()
      self.drawPic(_result)
      #self.drawPic_mem(_result)

  def writeCsv(self, _list):
    writer = csv.writer(file('tmp.csv', 'a+'))
    writer.writerow([_list])

  def drawPic(self,_list):
    self.num+=1
    self._label.append(str(self.num))
    self._data.append(_list[0][0])
    self.writeCsv(_list[0][0])
    c = pychartdir.XYChart(500, 400)
    c.setPlotArea(30, 20, 400, 300)
    c.addLineLayer(self._data)
    c.xAxis().setLabels(self._label)
    c.makeChart("tmp.png")
    mImage = wx.Image("tmp.png")
    mImage = mImage.Scale(500,300)
    self.bitmap_cpu.SetBitmap(wx.BitmapFromImage(mImage))

  def drawPic_mem(self,_list):
    self.num02+=1
    self._label02.append(str(self.num02))
    self._data02.append(_list[1][0])
    c = pychartdir.XYChart(500, 400)
    c.setPlotArea(60, 40, 400, 300)
    c.addLineLayer(self._data02)
    c.xAxis().setLabels(self._label02)
    c.makeChart("tmp02.png")
    mImage = wx.Image("tmp02.png")
    mImage = mImage.Scale(500,300)
    self.bitmap_mem.SetBitmap(wx.BitmapFromImage(mImage))

if __name__ == '__main__':
  app = wx.App()
  MyFrame().Show()
  app.MainLoop()

原理:

界面用wx做的,图形用pychartdir做的,命令用的是top命令,每次截取到的数据都生成一张临时图片,然后刷新到屏幕上,看起来就是实时数据监控的效果了,基本上BUG一大堆,也懒得改了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python实现换行符转换的脚本的教程
Apr 16 Python
Python实现控制台输入密码的方法
May 29 Python
Python设计模式之MVC模式简单示例
Jan 10 Python
Python 记录日志的灵活性和可配置性介绍
Feb 27 Python
Python实现修改文件内容的方法分析
Mar 25 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
获取django框架orm query执行的sql语句实现方法分析
Jun 20 Python
python画图的函数用法以及技巧
Jun 28 Python
Python3 翻转二叉树的实现
Sep 30 Python
Django 路由层URLconf的实现
Dec 30 Python
python实现拼接图片
Mar 23 Python
什么是python的列表推导式
May 26 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 #Python
python实现简易内存监控
Jun 21 #Python
Python实现的微信好友数据分析功能示例
Jun 21 #Python
python skimage 连通性区域检测方法
Jun 21 #Python
python3实现windows下同名进程监控
Jun 21 #Python
python检测主机的连通性并记录到文件的实例
Jun 21 #Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 #Python
You might like
重置版游戏视频
2020/04/09 魔兽争霸
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
php获取远程文件内容的函数
2015/11/02 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
javascript学习之json入门
2016/12/22 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
vue 调用 RESTful风格接口操作
2020/08/11 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
[45:18]完美世界DOTA2联赛循环赛 PXG vs IO 第二场 11.06
2020/11/09 DOTA
Python 一句话生成字母表的方法
2019/01/02 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
财务与信息服务专业推荐信
2013/11/28 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
2014年教研员工作总结
2014/12/23 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
python实现简单的名片管理系统
2021/04/26 Python
JavaScript中isPrototypeOf函数
2021/11/07 Javascript
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis