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的函数的一些高阶特性
Apr 27 Python
Python实现保证只能运行一个脚本实例
Jun 24 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
解决Python print输出不换行没空格的问题
Nov 14 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
python构建指数平滑预测模型示例
Nov 21 Python
python opencv 实现对图像边缘扩充
Jan 19 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
python爬虫泛滥的解决方法详解
Nov 25 Python
Python基于Faker假数据构造库
Nov 30 Python
Python绘制散点图之可视化神器pyecharts
Jul 07 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调用三种数据库的方法(2)
2006/10/09 PHP
PHP 分页类(模仿google)-面试题目解答
2009/09/13 PHP
php ss7.5的数据调用 (笔记)
2010/03/08 PHP
php生成excel文件的简单方法
2014/02/08 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
用jquery实现的一个超级简单的下拉菜单
2014/05/18 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
微信小程序 setData的使用方法详解
2017/04/20 Javascript
JS实现简易换图时钟功能分析
2018/01/04 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
[01:12:27]EG vs Secret 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python实现朴素贝叶斯分类器
2018/03/28 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
2014年最新领导班子整改方案
2014/09/27 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS