内容简介:这篇文章主要介绍了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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UML基础、案例与应用
施穆勒 / 李虎、赵龙刚 / 人民邮电出版社 / 2004-7-1 / 42.00元
本书教读者循序渐进地、系统地学习UML基础知识和应用技术。和前一版相比,本书内容根据UML 2.0进行了补充和更新,随书光盘包含了建模工具Poseidon的试用版。 全书分为三部分24章。第一部分“基础知识”包括第1章到第15章,主要是介绍UML语言的基础知识以及面向对象的概念和思想,还简单介绍了UML在开发过程的应用方法。第二部分“学习案例”包括第16章到第22章,结合实例详细分析了UML的应用......一起来看看 《UML基础、案例与应用》 这本书的介绍吧!
HTML 编码/解码
HTML 编码/解码
HSV CMYK 转换工具
HSV CMYK互换工具