DEV Community

Amanda
Amanda

Posted on

Calculando o tempo de Execução de códigos em Python

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')
Enter fullscreen mode Exit fullscreen mode

Imagem exibindo a saída do trecho de código acima

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))
Enter fullscreen mode Exit fullscreen mode

Imagem exibindo a saída do trecho de código acima

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)`
Enter fullscreen mode Exit fullscreen mode

Imagem exibindo a saída do trecho de código acima

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)]
Enter fullscreen mode Exit fullscreen mode

Como por exemplo, ver todos os tempos de execução:

tempo_exec.timings
Enter fullscreen mode Exit fullscreen mode

Imagem exibindo a saída do trecho de código acima

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()
Enter fullscreen mode Exit fullscreen mode

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.

Imagem exibindo a saída do trecho de código acima

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)