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正则用法的简单实例
Jun 21 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
Python图像处理之简单画板实现方法示例
Aug 30 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
python实现中文文本分句的例子
Jul 15 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
已安装tensorflow-gpu,但keras无法使用GPU加速的解决
Feb 07 Python
Python文件操作基础流程解析
Mar 19 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
Feb 23 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表单转换textarea换行符的方法
2010/09/10 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
js 浏览器事件介绍
2012/03/30 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
2015/08/11 Javascript
AngularJS整合Springmvc、Spring、Mybatis搭建开发环境
2016/02/25 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
[02:36]DOTA2混沌骑士 英雄基础教程
2013/11/26 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
python实现socket端口重定向示例
2014/02/10 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
python安装sklearn模块的方法详解
2020/11/28 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
html5 CSS过度-webkit-transition使用介绍
2013/07/02 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
中粮集团旗下食品网上购物网站:我买网
2016/09/22 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
物理教育专业求职信
2014/06/25 职场文书
毛主席纪念堂观后感
2015/06/17 职场文书
领导视察通讯稿
2015/07/18 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL