Memantau Kecepatan Jaringan Real-time dengan Python & Psutil

Potongan kode Python ini menunjukkan cara menggunakan library psutil untuk menghitung kecepatan unduh dan unggah jaringan secara real-time. Fungsi ini bekerja dengan mengukur jumlah total byte yang diterima dan dikirim oleh interface jaringan dalam interval waktu tertentu, lalu mengubahnya menjadi Megabit per detik (Mbps).

1import psutil
2import time
3
4def get_network_speed(interval=1):
5    """
6    Menghitung kecepatan jaringan (download & upload) dalam Mbps.
7    Fungsi ini memblokir eksekusi selama durasi 'interval'.
8    """
9    # Ambil statistik awal dari semua interface jaringan
10    start_counters = psutil.net_io_counters()
11    
12    time.sleep(interval)
13    
14    # Ambil statistik akhir setelah interval berlalu
15    end_counters = psutil.net_io_counters()
16
17    # Hitung selisih byte yang dikirim dan diterima
18    bytes_sent = end_counters.bytes_sent - start_counters.bytes_sent
19    bytes_recv = end_counters.bytes_recv - start_counters.bytes_recv
20
21    # Konversi byte per interval ke Megabit per detik (Mbps)
22    # 1 byte = 8 bit. 1 Megabit = 1,024 * 1,024 bit.
23    upload_mbps = round((bytes_sent * 8) / (interval * 1024 * 1024), 2)
24    download_mbps = round((bytes_recv * 8) / (interval * 1024 * 1024), 2)
25
26    return {"download": download_mbps, "upload": upload_mbps}
27
28# Contoh penggunaan:
29if __name__ == "__main__":
30    print("Memantau kecepatan jaringan... Tekan CTRL+C untuk berhenti.")
31    try:
32        while True:
33            speed = get_network_speed(interval=2)
34            print(f"Download: {speed['download']:.2f} Mbps, Upload: {speed['upload']:.2f} Mbps")
35    except KeyboardInterrupt:
36        print("\nProgram dihentikan.")