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

Python获取CPU使用率、内存使用率、网络使用状态

2015年7月10日 11:23 by wst

python运维

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

适用于python2和python3

#!/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

如需获取个别进程的状态,请关注后续文章!

如有疑问请在下方评论,或加我微信:wst_ccut

Comment

×

Name

Email address

Comment

Close

Submit

Not Comment!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值