As vezes é bom medir o tempo decorrido em um operação, mas um simples print de um objeto time não é lá muito amigável. Neste post, vou mostrar como formatar em horas, minutos, segundos e milissegundos o tempo decorrido em uma operação.
Para realizarmos esta operação, precisaremos da função time(), que fica no pacote time:
from time import time
Agora precisamos das variáveis com o horário de inicio, o de conclusão e a diferença entre elas:
start = time() # Operations... end = time() diff = end - start
O próximo passo é conseguir o número de horas:
hours, r = divmod(diff, 3600)
A função divmod retorna o resultado da divisão (hours) E o resto (r). Uma alternativa para este método seria fazer uma divisão e depois um mod (%), mas com esta função, economizamos um statement.
Apenas para exemplificar, a utilização da função divmod seria o equivalente a fazer isso:
hours = diff / 3600 r = diff % 3600
Neste ponto, já temos as horas. Agora precisamos dos minutos e segundos. Spoiler alert: Vamos utilizar a mesma lógica.
minutes, seconds = divmod(r, 60)
Para exibir no formato que desejamos, agora basta formatar a string:
print("{hours:0>2}:{minutes:0>2}:{seconds:05.3f}".format(hours=hours, minutes=minutes, seconds=seconds))
Para facilitar, fiz um snippet no GitHub com uma função que retorna a string já formatada.
Espero ter ajudado.
Latest posts by Breno RdV (see all)
- O que é Metaclass e como ela funciona. (#python #dev #metaclass) - janeiro 11, 2023
- Entenda a mágica dos Generators. (#python, #dev, #generator, #iterator) - dezembro 28, 2022
- Ordenando um DataFrame por múltiplas colunas. (#python #pandas #jupyter #dev #data) - agosto 3, 2022