net_io_counters() from ps_utils returns different results for bytes sent and recv than other methods like netsh wlan show inter when launching high throughput traffic. Here is a way to replicate the problem: def get_sent_bytes(): bytes_Sent = psutil.net_io_counters(pernic=True)["your_interface"].bytes_sent def get_recv_bytes(): //same as upper func but with .bytes_recv Now on 2 separte device A and B : A : iperf3 -s B : iperf3 -c [ip of the A's interface you want to test] Now on A and B : every second returns the result of get_sent_bytes and get_recv_bytes. As you start launching more iperfs, you will start noticing a divergence between sent_bytes values and recv_bytes values using psutils rather than netsh wlan show intf or other commands. I saw a thread saying that psutils returns multicast, unicast and broadcast and that may be why the value differs from other method of getting rx and tx but Im not sure. Continue reading...