Você já teve curiosidade em saber o tempo de execução do seu código ou comparar qual método utilizado é mais rápido?
O objetivo deste post é compartilhar algumas formas de fazer isso usando Python.
Biblioteca time
Utilizando a biblioteca time, você pode capturar o início e o fim da execução de um trecho de código para saber o tempo que ela levou.
import time
tempo_inicio = time.time()
for i in range(3):
print(i)
tempo_fim = time.time()
print(f('Tempo de execução do trecho de código {str(tempo_fim - tempo_inicio)}s')
Funções Mágicas do iPython
No iPython você pode usar %%timeit no início da célula para capturar o tempo de execução de toda a célula ou o %timeit para apenas uma única linha:
%timeit sum(range(5000))
O que essa função faz é automaticamente utilizar múltiplas execuções do código e retornar o tempo médio de execução.
Essa função também aceita alguns argumentos, como por exemplo -n que define o número de vezes que o código deve ser executado, e -r que define o número de repetições com a quantidade de loops passada no argumento “-n”.
%%timeit -r2 -n2
for i in range(3):
print(i)`
Também é possível armazenar o resultado em uma variável (utilizando o argumento -o) para visualizar melhor os resultados:
tempo_exec = %timeit -o -r2 -n2 my_list = [i for i in range(3)]
Como por exemplo, ver todos os tempos de execução:
tempo_exec.timings
Outra opção é a função mágica %time, que verifica o tempo de execução uma única vez. Ela é preferível em alguns casos, como quando se quer descobrir o tempo de execução para uma função de ordenação. Nesse caso, como uma lista já ordenada demora um tempo menor do que uma lista não ordenada, usar %timeit pode distorcer os resultados.
import random
random_list = [random.random() for i in range(100000)]
%time random_list.sort()
Por outro lado, %timeit além de executar o cálculo várias vezes retornando a média para tentar contornar a influência de outras tarefas do sistema durante a execução, também realiza outras operações por baixo dos panos, como desabilitar o garbage collector (responsável pela limpeza de objetos não utilizados), retornando um tempo de execução menor e mais acurado.
Para saber mais:
Documentação iPython. Disponível em: https://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-time
Jake VanderPlas. Python Data Science Handbook. Disponível em: https://jakevdp.github.io/PythonDataScienceHandbook/01.07-timing-and-profiling.html
Top comments (0)