流量统计实例
以下是一个简单的使用Python统计网络流量的实例(以统计本地网络接口的进出流量为例),这里使用 psutil 库来获取系统相关信息:
import psutil
import time
def get_network_io_counters():
net_io = psutil.net_io_counters()
return net_io.bytes_sent, net_io.bytes_recv
if __name__ == "__main__":
prev_sent, prev_recv = get_network_io_counters()
while True:
time.sleep(1)
sent, recv = get_network_io_counters()
sent_speed = (sent - prev_sent) / 1
recv_speed = (recv - prev_recv) / 1
print(f"发送流量速度: {sent_speed / 1024:.2f} KB/s, 接收流量速度: {recv_speed / 1024:.2f} KB/s")
prev_sent, prev_recv = sent, recv
上述代码的工作原理如下:
1. 首先导入 psutil 库用于获取系统信息, time 库用于设置时间间隔。
2. get_network_io_counters 函数调用 psutil.net_io_counters() 获取当前网络接口的发送和接收字节数。
3. 在主程序中,先获取初始的发送和接收字节数,然后进入一个无限循环,每次循环间隔1秒,再次获取当前的发送和接收字节数,计算出这1秒内的流量速度,并打印出来,同时更新上一次的发送和接收字节数,以便下一次计算。
这个实例只是一个简单的本地网络流量统计,如果要进行更复杂的网络流量统计,比如针对特定网络连接、特定应用程序的流量统计等,可能需要使用更高级的网络分析工具或库,如 scapy 等。