Python проверка скорости интернета

Speedtest your connection in Python

Today we’ll be building our speed testing service in Python. We have Speedtest websites like this to test our ping, upload, and download speed for those who don’t know.

For today’s article, I was looking to automate this since I check it regularly.

I choose Python as the language, seeing I’m trying that out a bit.

Before we can use this package, we have to install it to become available for us to use.

Use the following command to install it:

Now open your python file and start by importing the speed test module.

Then we create a new speed test. In my case, I’m assigning it to the st variable.

Note: be aware running the speed test takes a while, so be patient 🙈

Now let’s try our download speed and print it out:

When we run this, we get a long number like this:

I’ll be showing you how to get this data and format it nicely.

Starting with the ping, for this to work, we need to define a server to ping. In our case let’s choose the best one.

After this, we can get the ping to this server by using the following:

print(f"Your ping is: st.results.ping> ms")

Let’s go on to download. We have already seen we can get this by calling the download() function, but it’s unformatted. Below I’ll show you how to format it to Mbit/s .

print(f"Your download speed: (st.download() / 1000 / 1000, 1)> Mbit/s")

We can make the same approach for the upload but use the upload() function.

print(f"Your upload speed: (st.upload() / 1000 / 1000, 1)> Mbit/s")

The full script will look like this:

import speedtest st = speedtest.Speedtest() st.get_best_server() print(f"Your ping is: st.results.ping> ms") print(f"Your download speed: (st.download() / 1000 / 1000, 1)> Mbit/s") print(f"Your upload speed: (st.upload() / 1000 / 1000, 1)> Mbit/s")

And when we run this, it outputs:

Your ping is: 30.97 ms Your download speed: 64.4 Mbit/s Your upload speed: 29.2 Mbit/s

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

Источник

Библиотека проверки скорости интернета — 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

Источник

Python: как проверить скорость Интернета

Возможно, вы уже пользовались сайтом speedtest раньше, но знаете ли вы, что в speedtest есть библиотека Python.
В этом руководстве мы научимся использовать библиотеку Speedtest для проверки скорости вашего интернета. Мы также узнаем, как использовать командные строки speedtest. Давайте начнем.

Установка Speedtest

Тест скорости интернета (скрипт)

После установки пакета speedtest. Теперь давайте посмотрим, как использовать его с кодом. В следующем коде я проверю скорость загрузки в Интернете.

import speedtest # Speed test st = speedtest.Speedtest() # Download Speed ds = st.download() print(ds)

Позвольте мне объяснить.
Сначала мы импортируем пакет speedtest. Затем вызывается класс Speedtest() . Затем проверьте мою скорость загрузки с помощью метода download() . Наконец, распечатайте результат. Вывод:

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

def humansize(nbytes): suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'] i = 0 while nbytes >= 1024 and i < len(suffixes)-1: nbytes /= 1024. i += 1 f = ('%.2f' % nbytes).rstrip('0').rstrip('.') return '%s %s' % (f, suffixes[i]) #Readable print(humansize(ds))

Теперь давайте проверим скорость загрузки с помощью метода upload() .

import speedtest # Speed test st = speedtest.Speedtest() # Upload speed us = st.upload() print(us) #Readable print(humansize(us))
386382.6586620888 301.51 KB

Командные строки Speedtest

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

usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes] [--share] [--simple] [--csv] [--csv-delimiter CSV_DELIMITER] [--csv-header] [--json] [--list] [--server SERVER] [--exclude EXCLUDE] [--mini MINI] [--source SOURCE] [--timeout TIMEOUT] [--secure] [--no-pre-allocate] [--version] Command line interface for testing internet bandwidth using speedtest.net.

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

Retrieving speedtest.net configuration. Testing from xxx Telecom (196.89.30.99). Retrieving speedtest.net server list. Selecting best server based on ping. Hosted by xxx Telecom (xxx) [394.57 km]: 29.1 ms Testing download speed. Download: 8.30 Mbit/s Testing upload speed. Upload: 10.33 Mbit/s

Эта команда выше проверяет ping , скорость загрузки и скорость скачивания . Проверить скорость интернета: по ссылке для обмена:

Retrieving speedtest.net configuration. Testing from xxx Telecom (196.89.30.99). Retrieving speedtest.net server list. Selecting best server based on ping. Hosted by xxx Telecom (xxx) [394.57 km]: 28.131 ms Testing download speed. Download: 3.74 Mbit/s Testing upload speed. Upload: 0.39 Mbit/s Share results: http://www.speedtest.net/result/12339819892.png

Speed Test Result

Как видите, у нас есть URL результатов. Откроем его в браузере. Результат: Надеемся, это легко понять. До скорого.

Использованная литература:

Рекомендуем хостинг TIMEWEB

Рекомендуем хостинг TIMEWEB

Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

Источник

Проверка скорости интернета библиотекой 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 запроса

Источник

Читайте также:  Set in java unique
Оцените статью