- How to detect internet speed using Python
- Install speedtest library
- Implementing the speed test
- Python: как проверить скорость Интернета
- Установка Speedtest
- Тест скорости интернета (скрипт)
- Командные строки Speedtest
- Использование:
- Использованная литература:
- Speedtest your connection in Python
- Installing the speedtest-cli in Python permalink
- Making a full Python speed test script permalink
- Thank you for reading, and let's connect! permalink
- Проверка скорости интернета библиотекой Requests в мультипроцессинге
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 moduleimport speedtestspeed_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 bytesMB = KB * 1024 # One MB is 1024 KBreturn int(bytes/MB)val = bytes_to_mb(1024 * 1024)print(val)
Here, we have used the above function on our code:
import speedtestspeed_test = speedtest.Speedtest()def bytes_to_mb(bytes):KB = 1024 # One Kilobyte is 1024 bytesMB = KB * 1024 # One MB is 1024 KBreturn 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Как видите, у нас есть URL результатов. Откроем его в браузере. Результат: Надеемся, это легко понять. До скорого.
Использованная литература:
Рекомендуем хостинг 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.
Installing the speedtest-cli in Python permalink
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:
Making a full Python speed test script permalink
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, and let's connect! permalink
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 запроса