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实现的一只从百度开始不断搜索的小爬虫
Aug 13 Python
wxPython学习之主框架实例
Sep 28 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
Python 性能优化技巧总结
Nov 01 Python
基于Django用户认证系统详解
Feb 21 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
Jul 09 Python
python识别验证码的思路及解决方案
Sep 13 Python
Python grpc超时机制代码示例
Sep 14 Python
Python激活Anaconda环境变量的详细步骤
Jun 08 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+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
浅析PHP开发规范
2018/02/05 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
JQuery入门——用one()方法绑定事件处理函数(仅触发一次)
2013/02/05 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
ionic实现滑动的三种方式
2016/08/27 Javascript
解决vue多个路由共用一个页面的问题
2018/03/12 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
python实现随机漫步算法
2018/08/27 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
详解Python中的路径问题
2020/09/02 Python
python开发入门——列表生成式
2020/09/03 Python
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
大学生农村教师实习自我鉴定
2013/09/21 职场文书
20年同学聚会邀请函
2014/02/04 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
工地安全质量标语
2014/06/07 职场文书
青奥会口号
2014/06/12 职场文书
教师节学生演讲稿
2014/09/03 职场文书
爱护公共设施演讲稿
2014/09/13 职场文书
工程合作意向书范本
2015/05/09 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
python 遍历磁盘目录的三种方法
2021/04/02 Python