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

原文地址:http://blog.csdn.net/bubu8633/article/details/8258342

注:需要安装psutil库

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 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值