Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gabriellopesdesouza2002/327592e092680efe3bb6205b4eba3088 to your computer and use it in GitHub Desktop.
Save gabriellopesdesouza2002/327592e092680efe3bb6205b4eba3088 to your computer and use it in GitHub Desktop.
Verifica o tempo de execução de uma função, utilizando uma função decoradora.
'''
a função velocidade recebe outra função como parâmetro
a função velocidade tem uma função chamada interna que
recebe argumentos não nomeados e argumentos nomeados (não sabendo a qtd de argumentos)
e a funcao interna vai retornar e executar a funcao que vem do parametro da funcao velocidade
e a funcao velocidade vai retornar a interna sem executar
def velocidade(funcao):
def interna(*args, **kwargs):
funcao(*args, **kwargs)
return interna
'''
from time import time
from time import sleep
def velocidade(funcao):
def interna(*args, **kwargs):
start_time = time() # pega o tempo atual
resultado = funcao(*args, **kwargs) # executa a função que vem do argumento funcao
end_time = time() # pega o tempo atual (depois de ter executado a função)
tempo_exec = (end_time - start_time) * 1000
# para pegar os milesegundos pega o tempo depois de executar a função e subtrai pelo tempo que foi iniciada
# depois multiplica por mil (1000)
print(f'\nA função "{funcao.__name__}" levou {tempo_exec:.2f}ms para executar') # :.2f formata para 2 casas decimais
return resultado # retorna o resultado sem executar
return interna
'''
@velocidade Vai executar procurando() como paramentro para a função decoradora velocidade
'''
@velocidade
def procurando():
for i in range(16): # para cada item no range de 16
print(i, end='') # mosta o item e deixa o final do print sem quebra de linha.
procurando() # executa a função
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment