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 布尔操作实现代码
Mar 23 Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
Python计算三维矢量幅度的方法
Jun 15 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
Flask Web开发入门之文件上传(八)
Aug 17 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
Python数据可视化:箱线图多种库画法
Nov 06 Python
Django数据结果集序列化并展示实现过程
Apr 22 Python
Numpy数组的广播机制的实现
Nov 03 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
Python xlwings插入Excel图片的实现方法
Feb 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
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
详解PHP序列化和反序列化原理
2018/01/15 PHP
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
JavaScript解析任意形式的json树型结构展示
2017/07/23 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
python 域名分析工具实现代码
2009/07/15 Python
使用python实现接口的方法
2017/07/07 Python
Python set常用操作函数集锦
2017/11/15 Python
python 2.7.14安装图文教程
2018/04/08 Python
python opencv读mp4视频的实例
2018/12/07 Python
python中eval与int的区别浅析
2019/08/11 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
六道php面试题附答案
2014/06/05 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
2014学雷锋活动心得体会
2014/03/10 职场文书
三八节标语
2014/06/27 职场文书
行风评议整改报告
2014/11/06 职场文书
公务员政审材料
2014/12/23 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
python实现进度条的多种实现
2021/04/29 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers