0

Velocidade da Internet com a Biblioteca SpeedTest Python

Tiago Dias
Tiago Dias

Criei esse artigo para mostrar como testar a velocidade da internet com a biblioteca SpeedTest em python, com um código para monitorar as taxas de download e upload. A publicação original e completa está no Dados ao Cubo, lá você encontra esse e outros artigos escritos por mim.


Dada esta introdução, vamos ao que interessa! Vamos começar o código python.


Instalando e Importando Bibliotecas

Primeiramente, vamos começar instalando uma biblioteca necessária para nossa solução. A speedtest pode ser instalada com o código abaixo. Esse procedimento só vai ser necessário durante a primeira execução.

pip install speedtest

Feito isso, podemos fazer a importação de todas bibliotecas que utilizaremos ao longo da solução. Temos a speedtest que vai fazer a medição da conexão, a datetime para pegar a data e hora no momento do teste, a pandas para estruturar o nossos dados para gravação, a time utilizaremos para fazer uma espera no código e a matplotlib e seaborn são bibliotecas gráficas para visualização dos dados.

import speedtest
from datetime import datetime
import pandas as pd
from time import sleep
import matplotlib.pyplot as plt
import seaborn as sns

Agora vamos fazer uma salada de frutas com essas bibliotecas e criar uma função para testar nossa conexão. 


Função para Testar Conexão

A função teste_internet, consiste em fazer a leitura de uma tabela Excel (dados.xlsx), realizar os testes de velocidade tanto de upload quanto de download (velocidade_download, velocidade_upload) e salvar (df.to_excel) essas informações na tabela carregada. Observe os detalhes no trecho de código abaixo com comentários por blocos.

# Função para testar velocidade de conexão
def teste_internet():
    # lendo base de dados de testes anteriores
    df = pd.read_excel('dados.xlsx', sheet_name='base')
    # Instanciando a função de test do Speedtest
    s = speedtest.Speedtest()
    s.get_servers()
    s.get_best_server()
    # Testando velocidades
    velocidade_download = round(s.download(threads=None)*(10**-6))
    velocidade_upload = round(s.upload(threads=None)*(10**-6))
    # Capturando data e hora do teste
    data_atual = datetime.now().strftime('%d/%m/%Y')
    hora_atual = datetime.now().strftime('%H:%M')
    # Atualizando base de dados dos testes
    df.loc[len(df)] = [data_atual, hora_atual, velocidade_download, velocidade_upload]
    df.to_excel('dados.xlsx', sheet_name='base', index=False)
    return data_atual, hora_atual, velocidade_download, velocidade_upload

Fazendo uma tradução técnica para quem curte os detalhes. O dataframe df vai ser carregado com os dados na planilha dados.xlsx na aba base. Em seguida vamos instanciar a variável s com a função Speedtest(), responsável por fazer teste de conexão e acrescentaremos as funções get_servers() e get_best_server(), responsáveis respectivamente por selecionar o servidor de origem da conexão e o melhor servidor destino para conectar e fazer o teste. Dando sequência, as variáveis velocidade_download e velocidade_upload receberão os resultados dos testes. A data e hora do teste vão estar nas variáveis data_atual e hora_atual, obtidas com a função now() e formatadas com a função strftime(). Finalizamos gravando os dados de data atual, hora atual, velocidade download e velocidade upload no dataframe df e exportamos com a função to_excel() para gravação do arquivo.

Muita coisa né? Mas é bem simples! Vamos executar a função e ver os resultados.


Resultados do Teste

Agora é a hora da verdade, vamos executar a função teste_internet criada acima. Criaremos mais duas variáveis para definir quantos testes vamos fazer e qual vai ser o intervalo entre os testes. A variável segundos é só para otimizar o código, e fazer o cálculo do tempo de espera entre um teste e outro.

# Definição de variáveis para teste
quantidade_testes = 10
intervalo_minutos = 1 
segundos = 60
# Loop para execução dos testes
for q in range(quantidade_testes):
    data_atual, hora_atual, velocidade_download, velocidade_upload = teste_internet()
    print('Teste {}/{} Data: {} Hora: {} Download: {} Upload: {}'.format(q+1, quantidade_testes, data_atual, hora_atual, velocidade_download, velocidade_upload))    
    if (q+1) < quantidade_testes:
        sleep(intervalo_minutos*segundos)

Após o loop for ser executado vamos obter o seguinte resultado, que pode ser observado na figura abaixo.

Teste da internet

Além do resultado obtido em tela, foi gravado o arquivo dados.xlsx com o resultado do teste feito acima. É tudo e somente isso nossa brincadeira de hoje.


Conclusões

Como resultado, foi apresentado uma forma de realizar o seu próprio teste de conexão com o Python e a biblioteca speedtest. Assim podemos ter os nossos próprios datasets de teste de velocidade da internet.


Gostou? Confere o artigo completo: Velocidade da Internet com a Biblioteca SpeedTest Python

0
0

Comentários (0)

Business Intelligence | Data Science | Machine Learning

Brasil