加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 17:19:01 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 Python获取CPU使用率、内存使用率、网络使用状态 注:需要安装psutil库 #!/usr/bin/env python## $Id: iotop.py 1160 2011-10-14 18:50:36Z [email?pr

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

Python获取CPU使用率、内存使用率、网络使用状态
注:需要安装psutil库
#!/usr/bin/env python
#
# $Id: iotop.py 1160 2011-10-14 18:50:36Z [email?protected] $
#
# Copyright (c) 2009,Jay Loden,Giampaolo Rodola'. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Transplant to NT system by hui.wang,2012-11-28
# Add function of get cpu state and get memory state by hui.wang,2012-11-29
 
"""
Shows real-time network statistics.
Author: Giampaolo Rodola' <[email?protected]>
"""
 
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
 
def print_line(str):
    print str
     
#function of Get CPU State
def getCPUstate(interval=1):
    return (" CPU: " + str(psutil.cpu_percent(interval)) + "%")
#function of Get Memory
def getMemorystate():
    phymem = psutil.phymem_usage()
    buffers = getattr(psutil,'phymem_buffers',lambda: 0)()
    cached = getattr(psutil,'cached_phymem',lambda: 0)()
    used = phymem.total - (phymem.free + buffers + cached)
    line = " Memory: %5s%% %6s/%s" % (
        phymem.percent,str(int(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.network_io_counters()
    pnic_before = psutil.network_io_counters(pernic=True)
    # sleep some time
    time.sleep(interval)
    tot_after = psutil.network_io_counters()
    pnic_after = psutil.network_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,memory_state):
    os.system("cls")
    """Print stats on screen."""
 
 
    #print current time #cpu state #memory
    print_line(time.asctime()+" | "+cpu_state+" | "+memory_state)
     
    # totals
    print_line(" NetStates:")
    print_line("total bytes:           sent: %-10s   received: %s" 

          % (bytes2human(tot_after.bytes_sent),bytes2human(tot_after.bytes_recv))
    )
    print_line("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_line("")
    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_line(templ % (name,"TOTAL","PER-SEC"))
        print_line(templ % (
            "bytes-sent",bytes2human(stats_after.bytes_sent),bytes2human(stats_after.bytes_sent - stats_before.bytes_sent) + '/s',))
        print_line(templ % (
            "bytes-recv",bytes2human(stats_after.bytes_recv),bytes2human(stats_after.bytes_recv - stats_before.bytes_recv) + '/s',))
        print_line(templ % (
            "pkts-sent",stats_after.packets_sent,stats_after.packets_sent - stats_before.packets_sent,))
        print_line(templ % (
            "pkts-recv",stats_after.packets_recv,stats_after.packets_recv - stats_before.packets_recv,))
        print_line("")
 
 
 
 
try:
    interval = 0
    while 1:
        args = poll(interval)
        refresh_window(*args)
        interval = 1
except (KeyboardInterrupt,SystemExit):
    pass

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读