Python获取CPU、内存使用率以及网络使用状态代码

由于psutil已更新到3.0.1版本,最新的代码如下:

#!/usr/bin/env python

import os
import time
import sys
import atexit
import psutil

#print "Welcome,current system is",os.name," 3 seconds late start to get data"
time.sleep(3)

line_num = 1

#function of Get cpu state
def getCPUstate(interval=1):
  return (" CPU:"+str(psutil.cpu_percent(interval))+"%")

def getMemorystate():
  phymem = psutil.virtual_memory()
  line = "Memory: %5s%% %6s/%s"%(
      phymem.percent,
      str(int(phymem.used/1024/1024))+"M",
      str(int(phymem.total/1024/1024))+"M"
      )
  return line
def bytes2human(n):
  """
  >>>bytes2human(10000)
  '9.8k'
  >>>bytes2human(100001221)
  '95.4M'
  """
  symbols = ('K','M','G','T','P','E','Z','Y')
  prefix = {}
  for i ,s in enumerate(symbols):
    prefix[s] = 1 << (i+1)*10
  for s in reversed(symbols):
    if n >=prefix[s]:
      value = float(n) / prefix[s]
      return '%.2f %s'%(value,s)
  return '%.2fB'%(n)
def poll(interval):
  """Retrieve raw stats within an interval window."""
  tot_before = psutil.net_io_counters()
  pnic_before = psutil.net_io_counters(pernic=True)
  #sleep some time
  time.sleep(interval)
  tot_after = psutil.net_io_counters()
  pnic_after = psutil.net_io_counters(pernic=True)
  #get cpu stats
  cpu_state = getCPUstate(interval)
  #get memory
  memory_state = getMemorystate()
  return (tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state)
def refresh_window(tot_before,tot_after,pnic_before,pnic_after,cpu_state,memory_state):
  """print stats on screen"""
  #print current time,cpu state,memory
  print (time.asctime() +" | "+cpu_state+" | "+
      memory_state)
  #total
  print(" NetStates:")
  print(" total bytes: sent: %-10s received: %s"%(\
    bytes2human(tot_after.bytes_sent), \
    bytes2human(tot_after.bytes_recv)))
  print( " total packets: sent: %-10s received: %s"%(\
    tot_after.packets_sent,\
    tot_after.packets_recv))
  # per-network interface details: let's sort network interfaces so
  # that the ones which generated more traffic are shown first
  print( " ")
  nic_names = pnic_after.keys()
  #nic_names.sort(key=lambda x: sum(pnic_after[x]), reverse=True)
  for name in nic_names:
    stats_before = pnic_before[name]
    stats_after = pnic_after[name]
    templ = "%-15s %15s %15s"
    print(templ % (name, "TOTAL", "PER-SEC"))
    print(templ % (
      "bytes-sent",
      bytes2human(stats_after.bytes_sent),
      bytes2human(stats_after.bytes_sent - stats_before.bytes_sent) +
      '/s',
      ))
    print(templ % (
      "bytes-recv",
      bytes2human(stats_after.bytes_recv),
      bytes2human(stats_after.bytes_recv- stats_before.bytes_recv)
      + '/s',
      ))
    print(templ % (
      "pkts-sent",
      stats_after.packets_sent,
      stats_after.packets_sent - stats_before.packets_sent,
      ))
    print((templ %(
      "pkts-recv",
      stats_after.packets_recv,
      stats_after.packets_recv - stats_before.packets_recv,
      )))
    print( " ")
try:
  interval = 0
  while 1:
    args = poll(interval)
    refresh_window(*args)
    interval = 1
except (KeyboardInterrupt,SystemExit):
  pass

以上就是本次更新后的实例代码,大家可以一起测试下,如果有其他问题可以在下方的留言区讨论,感谢你对我们的支持。

您可能感兴趣的文章:

  • Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
  • python和bash统计CPU利用率的方法
  • python统计cpu利用率的方法
  • python获取当前计算机cpu数量的方法
  • 使用Python编写一个模仿CPU工作的程序
  • 10种检测Python程序运行时间、CPU和内存占用的方法
  • 浅谈Python对内存的使用(深浅拷贝)
  • python多进程中的内存复制(实例讲解)
  • Python内存管理方式和垃圾回收算法解析
  • Python进程间通信之共享内存详解
  • python监控linux内存并写入mongodb(推荐)
  • 谈谈如何手动释放Python的内存
  • Python深入06——python的内存管理详解
(0)

相关推荐

  • python监控linux内存并写入mongodb(推荐)

    (需要安装psutil 用来获取服务器资源,以及pymongo驱动)#pip install psutil #pip install pymongo #vim memory_monitory.py 文件内容如下 #!/usr/bin/env python # -*- coding: UTF-8 -*- import psutil import socket import time from pymongo import MongoClient mongodbIp = '192.168.200.1

  • Python内存管理方式和垃圾回收算法解析

    概要 在列表,元组,实例,类,字典和函数中存在循环引用问题.有 __del__ 方法的实例会以健全的方式被处理.给新类型添加GC支持是很容易的.支持GC的Python与常规的Python是二进制兼容的. 分代式回收能运行工作(目前是三个分代).由 pybench 实测的结果是大约有百分之四的开销.实际上所有的扩展模块都应该依然如故地正常工作(我不得不修改了标准发行版中的 new 和 cPickle 模块).一个叫做 gc 的新模块马上就可以用来调试回收器和设置调试选项. 回收器应该是跨平台可移植

  • 使用Python编写一个模仿CPU工作的程序

    今天早上早些时候,在我的Planet Python源中,我读到了一篇有趣的文章"开发CARDIAC:纸板计算机(Developing upwards: CARDIAC: The Cardboard Computer)",它是关于名为Cardiac的纸板计算机的.我的一些追随者和读者应该知道,我有一个名为简单CPU(simple-cpu)的项目,过去的数月我一直工作于此,并且已经发布了源代码.我真的应该给这个项目提供一个合适的许可证,这样,其他人可能更感兴趣,并在他们自己的项目中使用.不

  • Python进程间通信之共享内存详解

    前一篇博客说了怎样通过命名管道实现进程间通信,但是要在windows是使用命名管道,需要使用python调研windows api,太麻烦,于是想到是不是可以通过共享内存的方式来实现.查了一下,Python中可以使用mmap模块来实现这一功能. Python中的mmap模块是通过映射同一个普通文件实现共享内存的.文件被映射到进程地址空间后,进程可以像访问内存一样对文件进行访问. 不过,mmap在linux和windows上的API有些许的不一样,具体细节可以查看mmap的文档. 下面看一个例子:

  • Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程

    以此文记录Python与Tensorflow及其开发环境的安装与配置过程,以备以后参考. 1 硬件与系统条件 Win7 64位系统,显卡为NVIDIA GeforeGT 635M 2 安装策略 a.由于以上原因,选择在win7下安装cpu版的tensorflow,使用anconda安装,总结下来,这么做是代价最小的. b. 首先,不要急于下载Python,因为最新的版本可能会与Anaconda中的Python版本发生冲突.以目前(截止2017-06-17日)的情况,Anaconda选择Anaco

  • 谈谈如何手动释放Python的内存

    在上篇博客中,提到了对一个脚本进行的多次优化.当时以为已经优化得差不多了,但是当测试人员测试时,我才发现,踩到了Python的一个大坑. 在上文的优化中,对每500个用户,会进行一些计算并记录结果在磁盘文件中.原本以为这么做,这些结果就在磁盘文件中了,而不会再继续占用内存:但实际上,Python的大坑就是Python不会自动清理这些内存.这是由其本身实现决定的.具体原因网上多有文章介绍,这里就不copy了. 本篇博客将贴一个笔者的实验脚本,用以说明Python确实存在这么一个不释放内存的现象,另

  • python多进程中的内存复制(实例讲解)

    比较好奇python对于多进程中copy on write机制的实际使用情况.目前从实验结果来看,python 使用multiprocessing来创建多进程时,无论数据是否不会被更改,子进程都会复制父进程的状态(内存空间数据等).所以如果主进程耗的资源较多时,不小心就会造成不必要的大量的内存复制,从而可能导致内存爆满的情况. 示例 举个例子,假设主进程读取了一个大文件对象的所有行,然后通过multiprocessing创建工作进程,并循环地将每一行数据交给工作进程来处理: def parse_

  • python和bash统计CPU利用率的方法

    本文实例讲述了python和bash统计CPU利用率的方法.分享给大家供大家参考.具体如下: 开始的时候写了一个 bash 的实现: 因为最近也在学习 python ,所以就尝试着用 python 再实现一回: 支援 python2 环境: 请各位给予下建议,有什么改良的地方可以提一下,不甚感激: Python代码如下: #!/usr/bin/python # -*- coding:utf8 -*- __author__ = 'chenwx' def cpu_rate(): import tim

  • python统计cpu利用率的方法

    本文实例讲述了python统计cpu利用率的方法.分享给大家供大家参考.具体实现方法如下: #-*-coding=utf-8-*- import win32pdh import time # Counter paths PROCESSOR_PERCENT = r'\Processor(_Total)\% Processor Time' MEMORY_PERCENT = r'\Memory\% Committed Bytes In Use' MEMORY_COMMITTED = r'\Memory

  • 浅谈Python对内存的使用(深浅拷贝)

    本文主要研究的是Python对内存的使用(深浅拷贝)的相关问题,具体介绍如下. 浅拷贝就是对引用的拷贝(只拷贝父对象) 深拷贝就是对对象的资源的拷贝 >>> a=[1,2,3,'a','b'] >>> b=a >>> b [1, 2, 3, 'a', 'b'] >>> a [1, 2, 3, 'a', 'b'] >>> id(a) 3021737547592 >>> id(b) 3021737547

  • 10种检测Python程序运行时间、CPU和内存占用的方法

    在运行复杂的Python程序时,执行时间会很长,这时也许想提高程序的执行效率.但该怎么做呢? 首先,要有个工具能够检测代码中的瓶颈,例如,找到哪一部分执行时间比较长.接着,就针对这一部分进行优化. 同时,还需要控制内存和CPU的使用,这样可以在另一方面优化代码. 因此,在这篇文章中我将介绍7个不同的Python工具,来检查代码中函数的执行时间以及内存和CPU的使用. 1. 使用装饰器来衡量函数执行时间 有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果: import time

  • Python深入06——python的内存管理详解

    语言的内存管理是语言设计的一个重要方面.它是决定语言性能的重要因素.无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征.这里以Python语言为例子,说明一门动态类型的.面向对象的语言的内存管理方式. 对象的内存使用 赋值语句是语言最常见的功能了.但即使是最简单的赋值语句,也可以很有内涵.Python的赋值语句就很值得研究. a = 1 整数1为一个对象.而a是一个引用.利用赋值语句,引用a指向对象1.Python是动态类型的语言(参考动态类型),对象与引用分离.Python

  • python获取当前计算机cpu数量的方法

    本文实例讲述了python获取当前计算机cpu数量的方法.分享给大家供大家参考.具体分析如下: 这里实际上返回的是计算机的cpu核心数,比如cpu是双核的,则返回2,如果双四核cpu,则返回8 from multiprocessing import cpu_count print(cpu_count()) 本机是四核电脑,返回结果:4 希望本文所述对大家的Python程序设计有所帮助.

随机推荐