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 相关文章推荐
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
Python爬虫入门有哪些基础知识点
Jun 02 Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 Python
django restframework serializer 增加自定义字段操作
Jul 15 Python
python实现画图工具
Aug 27 Python
Python基础之Socket通信原理
Apr 22 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 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强制更新图片缓存的方法
2015/02/11 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
微信小程序 转发功能的实现
2017/08/04 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
Ubuntu 下 vim 搭建python 环境 配置
2017/06/12 Python
python实现用户管理系统
2018/01/10 Python
python测试mysql写入性能完整实例
2018/01/18 Python
详解Python自建logging模块
2018/01/29 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
解决python多行注释引发缩进错误的问题
2019/08/23 Python
python实现while循环打印星星的四种形状
2019/11/23 Python
python读写文件write和flush的实现方式
2020/02/21 Python
利用Python实现某OA系统的自动定位功能
2020/05/27 Python
怎么快速自学python
2020/06/22 Python
python关于倒排列的知识点总结
2020/10/13 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
泰国折扣酒店预订:Hotels2Thailand
2018/03/20 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
店长岗位职责
2013/11/21 职场文书
六十岁生日答谢词
2014/01/10 职场文书
质量主管工作职责
2014/09/26 职场文书