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设计一个经典小游戏
May 15 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
Python 中字符串拼接的多种方法
Jul 30 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python登录系统界面实现详解
Jun 25 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
简单了解python的内存管理机制
Jul 08 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Python csv模块使用方法代码实例
Aug 29 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 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中的strpos使用示例
2014/02/27 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
php实现微信原生支付(扫码支付)功能
2018/05/30 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
Document 对象的常用方法
2009/07/31 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
vue 路由嵌套高亮问题的解决方法
2018/05/17 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
layui实现根据table数据判断按钮显示情况的方法
2019/09/26 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python中的装饰器详解
2015/04/13 Python
python制作最美应用的爬虫
2015/10/28 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
机器学习10大经典算法详解
2017/12/07 Python
python Xpath语法的使用
2020/11/26 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
我的动漫时代的创业计划书范文
2014/01/27 职场文书
环保口号大全
2014/06/12 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
简历自我评价模板
2015/03/11 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers