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

作者:laozhang 时间:2023-03-14 22:43:36 

由于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
标签:Python,CPU使用率,内存使用率,网络状态
0
投稿

猜你喜欢

  • Python Unittest自动化单元测试框架详解

    2023-09-13 23:13:56
  • Python+SeaTable实现生成条形码图片并写入表格

    2022-09-04 22:13:26
  • FckEditor配置手册中文教程详细说明

    2010-02-28 12:37:00
  • Jupyter Notebook安装及使用方法解析

    2022-06-22 08:28:09
  • Python实现树的先序、中序、后序排序算法示例

    2022-12-26 04:00:18
  • Vue路由的模块自动化与统一加载实现

    2024-04-27 16:17:15
  • Python读写Excel文件的实例

    2023-03-05 03:25:10
  • javascript仿qq界面的折叠菜单实现代码

    2024-06-12 17:12:49
  • 详解python的xlwings库读写excel操作总结

    2021-03-25 02:00:00
  • 快速创建python 虚拟环境

    2023-10-04 08:58:31
  • [译]开发人员经常犯的8个设计错误

    2008-02-01 12:28:00
  • 基于PyQT实现区分左键双击和单击

    2022-10-30 01:58:47
  • Python smtplib实现发送邮件功能

    2021-02-14 20:07:26
  • tensorflow如何批量读取图片

    2023-10-25 03:50:25
  • Python中extend和append的区别讲解

    2021-03-28 04:20:37
  • Google的YSlow——Page Speed(附插件下载)

    2009-09-27 12:40:00
  • Python 确定多项式拟合/回归的阶数实例

    2023-08-26 23:54:58
  • Python办公自动化从Excel中计算整理数据并写入Word

    2021-12-19 03:22:35
  • js保留两位小数方法总结

    2023-07-18 17:34:35
  • Python灰度变换中灰度切割分析实现

    2021-10-05 12:07:49
  • asp之家 网络编程 m.aspxhome.com