成功最有效的方法就是向有经验的人学习!

python 获取网卡实时流量

psutil模块是一个跨平台的获取进程和系统应用情况(CPU,内存,磁盘,网络,传感器)的库。该模块用于系统监控、限制进程资源和运行进程的管理等方面

安装模块psutil

pip install psutil

亲测Linux和Windows使用正常

net_traffic.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-

try:
    import psutil
except ImportError:
    print('Error: psutil module not found!')
    exit()

def get_key():

    key_info = psutil.net_io_counters(pernic=True).keys()

    recv = {}
    sent = {}

    for key in key_info:
        recv.setdefault(key, psutil.net_io_counters(pernic=True).get(key).bytes_recv)
        sent.setdefault(key, psutil.net_io_counters(pernic=True).get(key).bytes_sent)

    return key_info, recv, sent

def get_rate(func):

    import time

    key_info, old_recv, old_sent = func()

    time.sleep(1)

    key_info, now_recv, now_sent = func()

    net_in = {}
    net_out = {}

    for key in key_info:
        # float('%.2f' % a)
        net_in.setdefault(key, float('%.2f' %((now_recv.get(key) - old_recv.get(key)) / 1024)))
        net_out.setdefault(key, float('%.2f' %((now_sent.get(key) - old_sent.get(key)) / 1024)))

    return key_info, net_in, net_out

while 1:
    try:
         key_info, net_in, net_out = get_rate(get_key)

         for key in key_info:
             # lo 是linux的本机回环网卡,以太网是我win10系统的网卡名
             if key != 'lo' or key == '以太网':
                print('%s\nInput:\t %-5sKB/s\nOutput:\t %-5sKB/s\n' % (key, net_in.get(key), net_out.get(key)))
    except KeyboardInterrupt:
        exit()

注意:以太网是我win10网卡名,可自行更改

数字显示,改成保留小数点2位,使用float

运行脚本,使用迅雷下载一步高清电影,效果如下:
file

赞(1) 打赏
未经允许不得转载:陈桂林博客 » python 获取网卡实时流量
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册