python 获取cpu使用率_Python获取CPU使用率、内存使用率、网络使用状态

#!/usr/bin/env python

importosimporttimeimportsysimportatexitimportpsutil#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))+"%")defgetMemorystate():

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")returnlinedefbytes2human(n):""">>>bytes2human(10000)

'9.8k'

>>>bytes2human(100001221)

'95.4M'"""symbols= ('K','M','G','T','P','E','Z','Y')

prefix={}for i ,s inenumerate(symbols):

prefix[s]= 1 << (i+1)*10

for s inreversed(symbols):if n >=prefix[s]:

value= float(n) /prefix[s]return '%.2f %s'%(value,s)return '%.2fB'%(n)defpoll(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)defrefresh_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 innic_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=0while 1:

args=poll(interval)

refresh_window(*args)

interval= 1

except(KeyboardInterrupt,SystemExit):pass

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值