Este é um post de José Lopes.
Pode ser útil conhecer o tempo que uma determinada função demora a ser executada. As razões podem ser das mais variadas, como pretender optimizar uma função ou verificar qual das soluções para o mesmo problema é a mais rápida.
Este post fornece uma solução genérica para contabilizar o tempo de execução de uma função.
A solução seguinte é muito simples e pode ser utilizada com qualquer função.
(1)import time (2)def timer (f, *args): (3) begin = time.time() (4) f(*args) (5) end = time.time() (6) total = end - begin (7) print total
Explicando o código:
(1) Importa o módulo de tempo.
(2) Declaração da função, com argumentos uma função f com qualquer número de argumentos (*args).
(3) e (5) Regista respectivamente o tempo antes e depois de executar a função f.
(4) Executa a função dada.
(6) Calcula o tempo de execução.
(7) Imprime para o ecrân o tempo de execução em segundos.
Segue-se o exemplo de como utilizar esta função, mais para realçar como declarar os
argumentos da função f para quem não esteja familiarizado.
Se tivermos uma função de teste:
def test(x, y): value = x + y return value
Basta fazer:
timer(test, 4, 6)
Como podemos verificar temos de declarar na função time todos os argumentos da função test e assim temos uma solução verdadeiramente genérica.