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中用于转换字母为小写的lower()方法使用简介
May 19 Python
详解Python中的序列化与反序列化的使用
Jun 30 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
python使用wxpy轻松实现微信防撤回的方法
Feb 21 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
python遍历文件目录、批量处理同类文件
Aug 31 Python
Python3使用xml.dom.minidom和xml.etree模块儿解析xml文件封装函数的方法
Sep 23 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
Mar 30 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
python re的findall和finditer的区别详解
Nov 15 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
python 爬取豆瓣网页的示例
Apr 13 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数据缓存技术
2007/02/14 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
php自动载入类用法实例分析
2016/06/24 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
php layui实现前端多图上传实例
2019/07/30 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
单击某一段文字改写文本颜色
2014/06/06 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
express的中间件cookieParser详解
2014/12/04 Javascript
js带点自动图片轮播幻灯片特效代码分享
2015/09/07 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
ionic2.0双击返回键退出应用
2019/09/17 Javascript
python 实现插入排序算法
2012/06/05 Python
python进阶教程之文本文件的读取和写入
2014/08/29 Python
Python中的两个内置模块介绍
2015/04/05 Python
Python中datetime常用时间处理方法
2015/06/15 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
Android面试题附答案
2014/12/08 面试题
经营管理策划方案
2014/05/22 职场文书
班级口号大全
2014/06/09 职场文书
硕士生找工作求职信
2014/07/05 职场文书
给老婆的保证书
2015/01/16 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
赡养老人协议书范本
2015/08/06 职场文书
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python