Скрипт замера скорости интернета

Проверка скорости интернета библиотекой Requests в мультипроцессинге

Сегодня речь пойдет о том, как из идеи по замеру скорости, был создан скрипт для загрузки файла изображения и отправки его же обратно на сервер, с расчетом времени выполнения каждой из функций и вычисления скорости.

Начну со списка используемых библиотек:

  • import os
  • from multiprocessing import Pool
  • import time
  • import pandas as pd
  • import requests
def download(id, path): start = time.time() file_name = str(id) + str(path.split('/')[-1]) try: r = requests.get(path, stream=True, timeout=5) except: return 0 size = int(r.headers.get('Content-Length', 0)) with open(file_name, 'wb') as f: for chunk in r.iter_content(chunk_size=1024): if chunk: f.write(chunk) end = time.time() duration = end - start sp = (((size * 8) / 1024) / 1024) / duration return sp

Теперь подробнее о том, что происходит.

В функции есть время старта и время окончания(в секундах), из которых в дальнейшем мы получаем время жизни. В имя файла записываем id сервера и название изображения(сделано для того, чтобы не возникало конфликтов при загрузке из множества источников). Далее делаем GET запрос, получаем размер файла(в байтах) и сохраняем его на диск. Переводим байты в биты, еще немного магии с формулами и на выходе имеем скорость в MBit/s.

Следующая функция — отдача файла на сервер:

def upload(id, path): start = time.time() file_name = str(id) + 'random7000x7000.jpg' with open(file_name, 'rb') as f: files = try: requests.post(path, files=files) except: return 0 size = os.path.getsize(file_name) end = time.time() duration = end - start sp = (((size * 8) / 1024) / 1024) / duration return sp

Здесь принцип тот же, только мы берем файл из локальной папки и POST запросом отправляем.

Наша следующая задача получить данные из двух предыдущих функций. Пишем еще одну функцию:

def test_f(conn, server): speed_download = download(server['server_id'], server['download']) speed_upload = upload(server['server_id'], server['upload']) return server['server_id'], speed_download, speed_upload 

Осталось дело за малым, прикрутить мультипроцессинг с пулом и параллельной функцией map:

def main(): pool = Pool() data = pool.map(test_f, server_list) df = pd.DataFrame(data, columns=['Server', 'Download', 'Upload']) print(df) pool.close() pool.join()
if __name__ == '__main__': main() 

Скрипт готов к использованию, для удобства вывода я использовал библиотеку pandas. Так же вывод можно поместить в базу и собирать статистику для анализа.

Читайте также:  Поиск сети интернет научно технической информации

UPD: Поправил исключения, внес правки в работу мультипроцессинга(заменил цикл на параллельную функцию), добавил таймаут для GET запроса

Источник

Библиотека проверки скорости интернета — Speedtest

Python — широко используемый высокоуровневый язык программирования общего назначения. Он используется для веб-разработки, машинного обучения и даже приложений с графическим интерфейсом. Его же можно использовать для проверки скорости интернета. Для этого в Python есть несколько библиотек. Одна из таких — speedtest-cli.

Speedtest-cli — это интерфейс командной строки для проверки скорости с помощью сервиса speedtest.net.

Установка

Модуль не является предустановленным в Python. Для его установки нужно ввести следующую команду в терминале:

После установки библиотеки можно проверить корректность и версию пакета. Для этого используется такая команда:

& speedtest-cli --version speedtest-cli 2.1.2 Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)]

Возможности speedtest-cli

Что делает Speedtest-CLI?
Speedtest-cli — это модуль, используемый в интерфейсе командной строки для проверки пропускной способности с помощью speedtest.net. Для получения скорости в мегабитах введите команду: speedtest-cli .

получения скорости в мегабитах

Это команда даст результат скорости в мегабитах. Для получения результата в байтах нужно добавить один аргумент к команде.

$ speedtest-cli --bytes Retrieving speedtest.net configuration. Testing from ******** (******). Retrieving speedtest.net server list. Selecting best server based on ping. Hosted by ******** (***) [1.85 km]: 3.433 ms Testing download speed. Download: 22.98 Mbyte/s Testing upload speed. Upload: 18.57 Mbyte/s

Также с помощью модуля можно получить графическую версию результата тестирования. Для этого есть такой параметр:

$ speedtest-cli --share Retrieving speedtest.net configuration. Testing from ***** (****). Retrieving speedtest.net server list. Selecting best server based on ping. Hosted by ***** (***) [1.85 km]: 3.155 ms Testing download speed. Download: 164.22 Mbit/s Testing upload speed. Upload: 167.82 Mbit/s Share results: http://www.speedtest.net/result/11111111111.png

Команда вернет ссылку, по которой можно перейти в браузере:

Читайте также:  При настройке локальной сети пропадает интернет

графическая версия результата тестирования

Для вывода более простой версии результатов теста, в которой будут только сведения о пинге, скорости скачивания и загрузки используйте параметр —simple .

$ speedtest-cli --simple Ping: 3.259 ms Download: 182.49 Mbit/s Upload: 172.16 Mbit/s

Использование speedtest в Python

Рассмотрим пример программы Python для тестирования скорости интернета:

 
import speedtest st = speedtest.Speedtest() option = int(input(''' Выбери тип проверки: 1 - Скорость скачивания 2 - Скорость загрузки 3 - Пинг Твой выбор: ''')) if option == 1: print(st.download()) elif option == 2: print(st.upload()) elif option == 3: servernames =[] st.get_servers(servernames) print(st.results.ping) else: print("Пожалуйста, введите цифру от 1 до 3!")

Результат выполнения этой простой программы будет такой:

Выбери тип проверки: 1 - Скорость скачивания 2 - Скорость загрузки 3 - Пинг Твой выбор: 2 136433948.59785312

Дополнение

Что бы погрузится в библиотеку speedtest-cli используйте команду --help , что бы получить список всех доступных параметров:

speedtest-cli --help # или speedtest-cli -h

Источник

Проверка скорости интернета Linux

Скорость подключения к интернету - это очень важный параметр работы сети. При подключении к интернету в офисе или дома может понадобиться проверить скорость интернета linux. Обычно, для этого достаточно открыть какой-либо сайт и скачать файл. Но это не единственный способ.

Проверка скорости интернета Linux может быть выполнена с помощью специального сервиса - speedtest.net. Вы можете открыть сайт проекта в браузере, программа определит ближайший к вам сервер, а затем покажет скорость доступа к этому серверу. Для работы сервиса используется флеш-плеер. Но не это тема нашей статьи. Сегодня мы рассмотрим как узнать скорость сети linux через терминал.

Проверка скорости интернета через терминал

Конечно, вы могли бы скачать файл с помощью wget и таким образом узнать скорость интернета. Но тогда на скорость загрузки будет влиять не только пропускная способность вашей сети, но и скорость отдачи сервера. Поэтому лучше использовать сервис speedtest, это, возможно, даже из командной строки.

speedtest-cli - это скрипт, написанный на Python, который позволяет измерить скорость интернета linux в двух направлениях. Вы можете проверять скорость сети на определенном расстоянии или для конкретных серверов, а также делиться своим результатом в интернете.

Установка SpeedTest-cli

Утилита может быть установлена двумя способами. Или из репозитория пакетов Python, либо прямо с Github, мы рассмотрим оба способа. Начнем с более сложного.

Сначала обновите систему до самой последней версии:

speed

Установите скрипт установки пакетов python:

sudo apt install python-pip

speed1

Затем установите саму программу speedtest-cli с помощью pip:

sudo pip install speedtest-cli

speed2

Второй способ еще проще, сначала скачайте файл программы с GitHub и дайте ему права на выполнение:

wget -O speedtest-cli https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
$ chmod +x speedtest-cli

Вы можете скопировать скрипт в папку /bin или выполнять его прямо из этой папки.

Проверка скорости интернет

Чтобы проверить скорость интернет linux достаточно запустить скрипт без параметров:

speed3

Вы можете посмотреть результат проверки в байтах, а не в битах:

speed4

Если хотите поделиться результатом с друзьями, можно попросить программу создать изображение:

speed6

Для получения информации только о ping, скорости загрузки и отдачи:

speed7

Посмотреть список доступных серверов можно с помощью параметра --list:

speed8

Теперь вы можете определить скорость соединения с нужным сервером, для этого достаточно указать ид сервера:

speed9

Чтобы вывести версию утилиты выполните:

speed11

А для просмотра всех возможных опций программы:

speed12

Выводы

Утилита speedtest-cli очень проста в использовании и в то же время может оказаться очень полезной. Во всяком случае теперь вы знаете как выполняется проверка скорости интернета linux. Если у вас остались вопросы, спрашивайте в комментариях!

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Оцените статью
Adblock
detector