Хотите узнать, насколько быстро работает ваш интернет? В этой статье мы рассмотрим простую программу на Python, которая поможет вам проверить скорость загрузки и отправки данных.
Мы узнаем, как клонировать проект из GitHub, установить необходимые пакеты и запустить программу. Также мы рассмотрим некоторые полезные опции и особенности тестирования скорости Интернета.
1. Создание виртуальной среды:
• Откройте терминал или командную строку.
• Перейдите в директорию, где вы хотите создать виртуальную среду (например, в папку проекта).
• Используйте команду python3 -m venv .venv, чтобы создать виртуальную среду с именем .venv:
$ python -m venv .venv
2. Активация виртуальной среды:
• Активируйте виртуальную среду, используя команду source .venv/bin/activate (для Linux/macOS) или .venv\Scripts\activate (для Windows):
$ source .venv/bin/activate
3. Клонирование репозитория:
• Используйте команду git clone https://github.com/yanik-v86/py-speedtest.git, чтобы клонировать репозиторий на ваш компьютер:
$ git clone https://github.com/yanik-v86/py-speedtest.git
4. Переход в директорию проекта:
• Перейдите в директорию клонированного проекта:
$ cd py-speedtest
5. Установка зависимостей:
• Установите необходимые пакеты, используя pip:
$ pip install -r requirements.txt
6. Запуск программы:
• Запустите программу speedtest.py с помощью python:
$ python speedtest.py
7. Выход из виртуальной среды:
• После завершения работы с проектом вы можете выйти из виртуальной среды с помощью команды deactivate.
Пример вывода:
[Начало проверки] 2024-10-12 00:25:07
[Скорость загрузки] 74.80 Мбит/с
[Скорость выгрузки] 42.53 Мбит/с
[Пинг] 41.27 мс
[Конец проверки] 2024-10-12 00:25:31
[Начало проверки] 2024-10-12 00:26:31
[Скорость загрузки] 72.22 Мбит/с
[Скорость выгрузки] 42.83 Мбит/с
[Пинг] 18.268 мс
[Конец проверки] 2024-10-12 00:26:53
Важно:
• Для корректной работы программы необходимо иметь установленное соединение с Интернетом.
• Скорость Интернета может изменяться в зависимости от времени дня, нагрузки на сеть и других факторов.
Код полностью:
import speedtest
import time
import datetime
import csv
from colorama import Fore, Style
# Сохранение в файл
def save_to_csv(data):
with open('speedtest_results.csv', mode='a', newline='') as file:
writer = csv.writer(file, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
writer.writerow(data)
# Форматирование вывода
def test(left, right):
print('{0:>20} {1}'.format(left, right))
# Определение цветов для вывода
def get_color(speed, threshold):
return Fore.GREEN if speed >= threshold else Fore.RED
def check_speed():
# Пороговые значения для цветового выделения
download_threshold = 50 # Мбит/с
upload_threshold = 10 # Мбит/с
ping_threshold = 50 # мс
# Получить текущую дату и время
current_date_time = datetime.datetime.now()
# Форматирование даты и времени в нужный формат
formatted_date_time = current_date_time.strftime("%Y-%m-%d %H:%M:%S")
# Вывести отформатированную дату и время
test("[Начало проверки]", formatted_date_time)
# Создаем объект Speedtest
st = speedtest.Speedtest(secure=True)
# Измеряем скорость загрузки, выгрузки и пинг
download_speed = st.download() / 10**6 # Мбит/с
upload_speed = st.upload() / 10**6 # Мбит/с
ping = st.results.ping # мс
# Вывод результатов в цвете
test("[Скорость загрузки]",f"{get_color(download_speed, download_threshold)}{download_speed:.2f} Мбит/с{Style.RESET_ALL}")
test("[Скорость выгрузки]",f"{get_color(upload_speed, upload_threshold)}{upload_speed:.2f} Мбит/с{Style.RESET_ALL}")
test("[Пинг]", f"{get_color(ping, ping_threshold)}{ping} мс{Style.RESET_ALL}")
# Получить текущую дату и время
current_date_time = datetime.datetime.now()
# Форматирование даты и времени в нужный формат
formatted_date_time2 = current_date_time.strftime("%Y-%m-%d %H:%M:%S")
# Вывести отформатированную дату и время
test("[Конец проверки]", formatted_date_time2)
print("\n")
# Сохранмть результат
save_to_csv([formatted_date_time, formatted_date_time2, f"{download_speed:.2f} Мбит/с", f"{upload_speed:.2f} Мбит/с", f"{ping} мс"])
#main
if __name__ =="__main__":
while True:
check_speed()
time.sleep(600)