Covil Do Dev

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.

Lindomar Rodrigues

Atualizado

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.

Obrigado por visitar o blog e por ler esse artigo, se tive qualquer dúvida, ideia ou sugestão, não hesite em entrar em contato pelo meu e-mail: lindomar@covildodev.com.br