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中else语句块的使用技巧
Jun 16 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
selenium+python截图不成功的解决方法
Jan 30 Python
安装docker-compose的两种最简方法
Jul 30 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
python编写扎金花小程序的实例代码
Feb 23 Python
Python 使用dict实现switch的操作
Apr 07 Python
Python中npy和mat文件的保存与读取
Apr 24 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
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
jQuery最佳实践完整篇
2011/08/20 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
js显示动态时间的方法详解
2016/08/20 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
2019/05/10 Javascript
微信小程序实现订单倒计时
2020/11/01 Javascript
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
解决Tensorflow使用pip安装后没有model目录的问题
2018/06/13 Python
Python如何发布程序的详细教程
2018/10/09 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Python如何对XML 解析
2020/06/28 Python
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
门卫工作岗位职责
2013/12/17 职场文书
酒店经理职责
2014/01/30 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
幼儿园大班个人总结
2015/02/28 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
开学第一天的感想
2015/08/10 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL