Medindo o Tempo de Execução de um Programa em Python
Aprenda a medir o tempo de execução de um programa ou função em Python, utilizando bibliotecas externas e recursos nativos da linguagem.
Medir o tempo de execução de um programa ou função em Python
pode ser útil para entender o desempenho do código e
identificar possíveis pontos de melhoria.
Existem várias maneiras de realizar essa medição, tanto utilizando bibliotecas externas quanto utilizando recursos nativos da linguagem. Neste artigo, exploraremos ambas as abordagens.
Utilizando a biblioteca time
Uma maneira simples de medir o tempo de execução de um programa em Python
é utilizando a biblioteca time
.
Essa biblioteca fornece uma função chamada time()
que retorna o tempo em segundos a partir de uma referência
arbitrária.
Para medir o tempo de execução de um trecho de código, basta gravar o tempo inicial antes da execução e o tempo final após a execução, subtraindo um do outro para obter o tempo total decorrido.
import time
# Grava o tempo inicial
inicio = time.time()
# Trecho de código a ser medido
for _ in range(1000000):
print("Covil do Dev")
# Grava o tempo final
fim = time.time()
# Calcula o tempo total decorrido
tempo_total = fim - inicio
print(f"Tempo de execução: {tempo_total} segundos")
Utilizando a biblioteca timeit
Outra biblioteca útil para medir o tempo de execução em Python
é a timeit
. Essa biblioteca fornece uma função
chamada timeit()
que automatiza o processo de medição de tempo.
A função timeit()
recebe como argumento uma string contendo o código a ser medido e retorna o tempo de execução médio
em segundos.
import timeit
# Trecho de código a ser medido
codigo = '''
for _ in range(1000000):
print("Covil do Dev")
'''
# Mede o tempo de execução médio
tempo_medio = timeit.timeit(codigo, number=1)
print(f"Tempo de execução: {tempo_medio} segundos")
Utilizando a biblioteca datetime
Além das bibliotecas time
e timeit
, é possível utilizar a biblioteca datetime
para medir o tempo de execução em
Python. Essa biblioteca fornece várias classes e funções para trabalhar com datas e tempos, incluindo a
classe datetime
que possui o método now()
que retorna o horário atual.
Para medir o tempo de execução de um trecho de código, basta gravar o horário inicial antes da execução e o horário final após a execução, subtraindo um do outro para obter a diferença de tempo.
import datetime
# Grava o horário inicial
inicio = datetime.datetime.now()
# Trecho de código a ser medido
for _ in range(1000000):
pass
# Grava o horário final
fim = datetime.datetime.now()
# Calcula a diferença de tempo
diferenca = fim - inicio
print(f"Tempo de execução: {diferenca.total_seconds()} segundos")
Utilizando a biblioteca perf_counter
A partir do Python 3.3
, a biblioteca time
foi expandida com a adição da função perf_counter()
. Essa função retorna
um contador de alta resolução (em segundos) que é mais preciso do que a função time()
. Por ser de alta resolução, ela
é especialmente útil para medir tempos muito curtos ou para medições mais precisas.
A lógica para medir o tempo de execução utilizando a função perf_counter()
é a mesma que a utilizada com a
função time()
, conforme demonstrado anteriormente.
import time
# Grava o tempo inicial
inicio = time.perf_counter()
# Trecho de código a ser medido
for _ in range(1000000):
pass
# Grava o tempo final
fim = time.perf_counter()
# Calcula o tempo total decorrido
tempo_total = fim - inicio
print(f"Tempo de execução: {tempo_total} segundos")
Conclusão
Medir o tempo de execução de um programa ou função em Python
é uma tarefa importante para entender o desempenho do
código.
Neste artigo, vimos diferentes maneiras de realizar essa medição, utilizando bibliotecas externas como time
e timeit
, bem como recursos nativos da linguagem como datetime
e perf_counter
.
A escolha da abordagem depende das necessidades específicas do projeto e da precisão desejada na medição do tempo de execução. Experimente as diferentes opções e escolha a que melhor atende às suas necessidades.
Se você tiver dúvidas, sinta-se à vontade para questionar na seção de comentários abaixo.