python实现监控linux性能及进程消耗性能的方法

 更新时间:2014年07月25日 09:22:08   投稿:shichen2014  
这篇文章主要介绍了python实现监控linux性能及进程消耗性能的方法,需要的朋友可以参考下

本文以实例形式实现了python监控linux性能以及进程消耗性能的方法,具体实现代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Jun 10 10:20:13 2014

@author: lifeix
"""

from collections import OrderedDict
import time
import os

def cpuinfo():
  lines = open('/proc/stat').readlines()
  for line in lines:
    ln = line.split()
    if ln[0].startswith('cpu'):
      return ln;
  return []
W = cpuinfo()
one_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7])
one_cpuused=long(W[1])+long(W[2])+long(W[3])

def CPUinfo():
  ''' Return the information in /proc/CPUinfo
  as a dictionary in the following format:
  CPU_info['proc0']={...}
  CPU_info['proc1']={...}
  '''
  CPUinfo=OrderedDict()
  procinfo=OrderedDict()

  nprocs = 0
  f = open('/proc/cpuinfo')
  for line in f.readlines():
    if not line.strip():
      # end of one processor
      CPUinfo['proc%s' % nprocs] = procinfo
      nprocs=nprocs+1
      # Reset
      procinfo=OrderedDict()
    else:
      if len(line.split(':')) == 2:
        procinfo[line.split(':')[0].strip()] = line.split(':')[1].strip()
      else:
        procinfo[line.split(':')[0].strip()] = ''
  return CPUinfo

def meminfo():
  ''' Return the information in /proc/meminfo
  as a dictionary '''
  meminfo=OrderedDict()

  f = open('/proc/meminfo')
  for line in f.readlines():
    meminfo[line.split(':')[0]] = line.split(':')[1].strip()
  return meminfo

f = open("sysinfo.log",'a')
def logSysInfo(cpu,mem,line):
  f.write('\ncpu:%s -------mem: %s------mongocpu:%s'%(cpu,mem,line))
  f.flush();

def process_info():
  #获取drm_processes 的进程号
  textlist = os.popen('top -bcn 1 -p 12023').readlines()
  line = ''
  for t in textlist:
    if t.find('12023'):
      line = t
  line = line.split(' ')
  #此处的值按照自己的需求去取
  return line[15]
if __name__=='__main__':
  CPUinfo = CPUinfo()
  for processor in CPUinfo.keys():
    print(CPUinfo[processor]['model name'])
    f.write("cpu:%s"%CPUinfo[processor]['model name'])
  #meminfo = meminfo()
  #print('Total memory: {0}'.format(meminfo['MemTotal'])) 

  try:
    while True:
      line = process_info()
      time.sleep(2)
      mi = meminfo()
      print('Free memory: {0}'.format(mi['MemFree']))
      W = cpuinfo()
      two_cpuTotal=long(W[1])+long(W[2])+long(W[3])+long(W[4])+long(W[5])+long(W[6])+long(W[7])
      two_cpuused=long(W[1])+long(W[2])+long(W[3])
      cpuused=float(two_cpuused-one_cpuused)/(two_cpuTotal-one_cpuTotal)
      print ('%.2f%%'%(cpuused*100))
      print line
      cpu = '%.2f%%'%(cpuused*100)
      logSysInfo(cpu,format(mi['MemFree']),line)
  except KeyboardInterrupt, e:
    print ("\ncpumonit exited")
    f.close()
f.close()

相关文章

  • python实现数独游戏 java简单实现数独游戏

    python实现数独游戏 java简单实现数独游戏

    这篇文章主要为大家详细介绍了python实现数独游戏和java实现数独游戏的相关代码,比较两种语言实现数独游戏的区别
    2018-03-03
  • 让Python程序定时执行的8种方法整理

    让Python程序定时执行的8种方法整理

    在日常工作中,我们常常会用到需要周期性执行的任务,一种方式是采用 Linux 系统自带的 crond 结合命令行实现,另外一种方式是直接使用Python。本文整理了一下 Python 定时任务的实现方式,希望对大家有所帮助
    2023-01-01
  • 为何你的Python代码在Notepad++中只闪现一下就消失无踪?

    为何你的Python代码在Notepad++中只闪现一下就消失无踪?

    你是否曾在Notepad++中运行编写的Python代码,却发现它们瞬间消失无踪?别担心,这不是你的幻觉,在这篇指南中,我们将揭秘这一现象背后的原因,并教你如何轻松解决,让我们一起揭开这个谜团,让你的Python代码在Notepad++中安然无恙吧!
    2024-02-02
  • Python开发毕设案例之桌面学生信息管理程序

    Python开发毕设案例之桌面学生信息管理程序

    毕业设计必备案例:Python开发桌面程序
    2021-11-11
  • Python的Flask框架应用程序实现使用QQ账号登录的方法

    Python的Flask框架应用程序实现使用QQ账号登录的方法

    利用QQ开放平台的API使用QQ账号登录是现在很多网站都具备的功能,而对于Flask框架来说则有Flask-OAuthlib这个现成的轮子,这里我们就来看一下Python的Flask框架应用程序实现使用QQ账号登录的方法
    2016-06-06
  • 14个Python处理Excel的常用操作分享

    14个Python处理Excel的常用操作分享

    自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。本文为大家整理了14个Python处理Excel的常用操作,非常好用,希望对大家有所帮助
    2023-03-03
  • Python中用altzone()方法处理时区的教程

    Python中用altzone()方法处理时区的教程

    这篇文章主要介绍了Python中用altzone()方法处理时区的教程,是Python入门中的基础知识,需要的朋友可以参考下
    2015-05-05
  • python实现Windows电脑定时关机

    python实现Windows电脑定时关机

    这篇文章主要为大家详细介绍了python实现Windows电脑定时关机功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • python读取图片任意范围区域

    python读取图片任意范围区域

    这篇文章主要为大家详细介绍了python读取图片任意范围区域,以一维数组形式返回,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Python利用pythonping处理ping的示例详解

    Python利用pythonping处理ping的示例详解

    ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令。本文将利用pythonpin实现gping的处理,需要的可以参考一下
    2022-11-11

最新评论