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

How to detect internet speed using Python

Many candidates are rejected or down-leveled in technical interviews due to poor performance in behavioral or cultural fit interviews. Ace your interviews with this free course, where you will practice confidently tackling behavioral interview questions.

Here, we learn how to detect the connected network speed of the computer using Python. To do that, we can use the speedtest-cli library, which has the required method for detecting speed.

Install speedtest library

Implementing the speed test

The speedtest module contains:

  • download – method to test the download speed.
  • upload – method to test the upload speed of the selected network.
# import speedtest module
import speedtest
speed_test = speedtest.Speedtest()
download_speed = speed_test.download()
print("Your Download speed is", download_speed)
upload_speed = speed_test.upload()
print("Your Upload speed is", upload_speed)

The above code prints the upload/download speed in bytes. Let’s create a method to convert bytes to MB:

def bytes_to_mb(bytes):
KB = 1024 # One Kilobyte is 1024 bytes
MB = KB * 1024 # One MB is 1024 KB
return int(bytes/MB)
val = bytes_to_mb(1024 * 1024)
print(val)

Here, we have used the above function on our code:

import speedtest
speed_test = speedtest.Speedtest()
def bytes_to_mb(bytes):
KB = 1024 # One Kilobyte is 1024 bytes
MB = KB * 1024 # One MB is 1024 KB
return int(bytes/MB)
download_speed = bytes_to_mb(speed_test.download())
print("Your Download speed is", download_speed, "MB")

Learn in-demand tech skills in half the time

Источник

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 хостинг.

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

Источник

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

Источник

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

Источник

Читайте также:  Как мая скорость интернета
Оцените статью
Adblock
detector