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创建和使用字典实例详解
Nov 01 Python
Python中的默认参数实例分析
Jan 29 Python
Python实现发送与接收邮件的方法详解
Mar 28 Python
python3使用matplotlib绘制条形图
Mar 25 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
python实现连连看辅助之图像识别延伸
Jul 17 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
Python版中国省市经纬度
Feb 11 Python
Python如何存储数据到json文件
Mar 09 Python
python读取hdfs上的parquet文件方式
Jun 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
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php数组随机排序实现方法
2015/06/13 PHP
非常好的js代码
2006/06/27 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
微信小程序前端自定义分享的实现方法
2019/06/13 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
简明 Python 基础学习教程
2007/02/08 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
意大利在线药房:Saninforma
2021/02/11 全球购物
20年同学聚会邀请函
2014/02/04 职场文书
青年文明号口号
2014/06/17 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
Python集合的基础操作
2021/11/01 Python
python中 .npy文件的读写操作实例
2022/04/14 Python