Как измерить скорость интернета в Python?

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Как измерить скорость интернета в Python? Полное руководство с практическими примерами

Измерение скорости интернета — это задача, которая часто возникает при создании мониторинговых систем, тестировании качества сетевых соединений или просто для личного использования.

Если вы хотите автоматизировать этот процесс и получать данные о скорости интернета прямо из кода, то Python предоставляет удобное решение с помощью модуля speedtest.

В этом руководстве мы подробно разберём, как измерить скорость интернета в Python, используя библиотеку speedtest, рассмотрим примеры реальных сценариев и создадим полноценный скрипт для мониторинга.


Зачем измерять скорость интернета программно?

  1. 📊 Мониторинг стабильности соединения.

  2. 🛡 Контроль за качеством предоставляемых услуг интернет-провайдера.

  3. Интеграция в системы IoT и сетевые сервисы.

  4. 📈 Автоматизация отчётности по скорости интернета.


Что такое библиотека speedtest?

speedtest — это Python-библиотека, которая взаимодействует с сервисом Speedtest.net и позволяет программно проводить замеры скорости интернета.

Она поддерживает измерение следующих параметров:

  • ✅ Скорость загрузки (Download Speed)

  • ✅ Скорость отправки (Upload Speed)

  • ✅ Время отклика (Ping/Latency)


Как установить библиотеку speedtest?

Открываем командную строку или терминал и вводим:

bash
pip install speedtest-cli

📌 Важно: Библиотека называется speedtest-cli, но использовать её можно как через командную строку, так и прямо в Python-скриптах.


Простейший пример измерения скорости интернета в Python

python
import speedtest st = speedtest.Speedtest() download_speed = st.download() / 1024 / 1024 # В мегабитах в секунду upload_speed = st.upload() / 1024 / 1024 # В мегабитах в секунду ping_result = st.results.ping print(f"Download Speed: {download_speed:.2f} Mbps") print(f"Upload Speed: {upload_speed:.2f} Mbps") print(f"Ping: {ping_result:.2f} ms")

Результат:

yaml
Download Speed: 92.34 Mbps Upload Speed: 25.67 Mbps Ping: 15.23 ms

Как работает библиотека speedtest?

  1. Выбирает ближайший сервер для теста.

  2. Измеряет время отклика (Ping).

  3. Загружает и выгружает данные для измерения скорости.

  4. Предоставляет результаты в виде числовых значений.


Использование методов и функций библиотеки

Метод Описание
.download() Тест скорости загрузки
.upload() Тест скорости отправки
.results.ping Получение пинга (задержки)
.get_servers() Получение списка серверов
.get_best_server() Выбор лучшего сервера

📚 Пример: Получение информации о ближайшем сервере

python
server_info = st.get_best_server() print(f"Лучший сервер: {server_info['host']}, {server_info['country']}")

Создание полноценного скрипта для мониторинга скорости интернета

python
import speedtest import time from datetime import datetime def test_speed(): st = speedtest.Speedtest() download_speed = st.download() / 1024 / 1024 upload_speed = st.upload() / 1024 / 1024 ping_result = st.results.ping return download_speed, upload_speed, ping_result while True: now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") download, upload, ping = test_speed() print(f"[{now}] Download: {download:.2f} Mbps | Upload: {upload:.2f} Mbps | Ping: {ping:.2f} ms") time.sleep(3600) # Тестировать каждый час

📌 Что делает скрипт:

  • Замеряет скорость каждые 60 минут.

  • Выводит результаты с временной меткой.

  • Может быть легко интегрирован в системы логирования.


Как сохранять результаты в CSV-файл?

python
import csv def log_results(download, upload, ping): with open("internet_speed_log.csv", mode="a", newline="") as file: writer = csv.writer(file) now = datetime.now().strftime("%Y-%m-%d %H:%M:%S") writer.writerow([now, f"{download:.2f}", f"{upload:.2f}", f"{ping:.2f}"]) # Использование: download, upload, ping = test_speed() log_results(download, upload, ping)

Теперь у вас будет накапливаться полноценная история изменений скорости интернета.


Работа с командной строкой (CLI)

Если не хотите писать код, просто используйте:

bash
speedtest

Для вывода результатов в формате JSON:

bash
speedtest --json

FAQ — Часто задаваемые вопросы

1. Можно ли выбрать конкретный сервер для теста?

Да, с помощью метода .get_servers() можно получить список серверов, а .get_best_server() — выбрать оптимальный.


2. Почему скорость в скрипте отличается от сайта speedtest.net?

Причины могут быть разными:

  • Разные серверы для тестирования.

  • Задержка в сети при запуске.

  • Нагрузки на локальную сеть или компьютер.


3. Как измерять скорость чаще, но не перегружать сеть?

Измените параметр time.sleep() на нужный интервал. Например, замер каждые 10 минут:

python
time.sleep(600)

4. Можно ли запускать скрипт как фоновый сервис?

Да, создайте cron-задачу (Linux) или используйте Планировщик задач (Windows).


5. Как ограничить количество тестов в день?

Добавьте счётчик запусков и завершайте скрипт по достижении лимита:

python
if test_count >= 10: break

6. Как отправлять отчёты о скорости на email или в Telegram?

Используйте модули smtplib для отправки писем или Telegram API для уведомлений. Это позволит получать отчёты прямо на почту или в мессенджер.


Заключение

Теперь вы знаете, как легко измерить скорость интернета в Python с помощью библиотеки speedtest. Вы можете не только быстро проверять скорость, но и строить полноценные системы мониторинга с логированием данных и отправкой уведомлений.

Автоматизация проверки качества соединения — полезный инструмент как для домашних пользователей, так и для системных администраторов. Экспериментируйте, улучшайте свои скрипты и держите качество интернета под контролем!

Новости