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

注:需要安装psutil库

源代码如下:

#

# Copyright (c) 2014, Lambo Wang, All rights reserved.

# Use of this source code is governed by a GNU v2 license that can be

# found in the LICENSE file.

#

# Logs:

# Transplant to system by Lambo Wang, 2012-11-28

# Add function of get cpu state and get memory state by Lambo Wang,2012-11-29

# first add to Git of OSChina,2014-10-24 by Lambo Wang

# support for psutil(v3.2.2),2015-11-12 by Lambo Wang

"""

Shows real-time system statistics.

Author: Lambo Wang

"""

import sys

import os

import atexit

import time

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)) + "%")

#function of Get Memory

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.8 K'

>>> bytes2human(100001221)

'95.4 M'

"""

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 '%.2f B' % (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 state

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):

if os.name == 'nt':

os.system("cls")

else:

os.system("clear")

"""Print stats on screen."""

#print current time #cpu state #memory

print(time.asctime()+" | "+cpu_state+" | "+memory_state)

# totals

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

ade836a53d14425d510b42a864e1ece5.jpe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值