Как мы можем рассчитать текущую нагрузку / использование сети компьютера и дискового ввода-вывода с помощью Python 3? Текущая нагрузка может означать измерение текущего использования в течение 1 секунды.
Метрики систем Windows / Linux, которые меня больше всего интересуют, включают в себя
- Пропускная способность сети (в Мбит / с)
- Дисковый ввод / вывод (в МБ / с)
PS: исследовано psutil
, но оно обеспечивает доступ только к показателям процессора и памяти, но не к сетевому и дисковому вводу-выводу.
Что-то подобное было достигнуто в DigitalOcean, как показано ниже на странице мониторинга показателей капель
Попытка расчета сетевого ввода-вывода
import psutil
import time
import os
interval = 1
t0 = time.time()
upload0 = psutil.net_io_counters().bytes_sent
download0 = psutil.net_io_counters().bytes_recv
time.sleep(interval)
t1 = time.time()
upload1 = psutil.net_io_counters().bytes_sent
download1 = psutil.net_io_counters().bytes_recv
upload = (upload1 - upload0) / (t1 - t0)
download = (download1 - download0) / (t1 - t0)
print('Upload (Mbps): ', round(upload/1000000, 3))
print('Download (Mbps): ', round(download/1000000, 3))
Сравнил результаты, представленные этим кодом, и он довольно сильно отличается от результатов, измеренных Speedtest.net.
Протестировано на Macbook Pro (OS X Mojave 10.14.5, общедоступный Wi-Fi, VPN)
Измеряется кодом: 9,382 Мбит / с Загрузить, 3,03 Мбит / с Загрузить
Измерено Speedtest: 53,05 Мбит / с, загрузка, 22,89 Мбит / с, загрузка