Header Ads Widget

Ticker

6/recent/ticker-posts

Python humaniza el intervalo de tiempo sin las bibliotecas Arrow o Humanize

A veces, cuando necesitamos depurar funciones en Python, necesitamos una forma de escribir un código de temporizador rápido para capturar el delta de tiempo y calcular el tiempo que tardó la función en ejecutarse. Este artículo le muestra una manera rápida y fácil de humanizar un intervalo de tiempo / delta de tiempo sin incorporar dependencias o bibliotecas adicionales como Arrow o Humanize.

1
Elapsed Time: 2 Days, 5 Hours, 7 Minutes, 13 Seconds

A veces, cuando necesitamos depurar funciones en Python, necesitamos una forma de escribir un código de temporizador rápido para capturar el delta de tiempo y calcular el tiempo que tardó la función en ejecutarse. Como ejemplo:

1
2
3
4
5
6
from datetime import datetime
start = datetime.now()
# Then call some long running code or function here
end = datetime.now()
diff = end - start
print diff

Y esto te da:

1
2
print diff
123 days, 16:48:22

Ahora la variable "diff" tiene un valor de tipo: timedelta (tiempo transcurrido o intervalo de tiempo en segundos) como se muestra con la función de Python type () a continuación:

1
2
print type(diff)
<class 'datetime.timedelta'>

Para formatearlo en un formato amigable legible por humanos, puede traer una biblioteca como Arrow o Humanize . No hay nada de malo en estas bibliotecas. De hecho, son dos grandes bibliotecas que utilizo con frecuencia. Pero a veces, solo necesita mostrar el intervalo de tiempo o el delta de tiempo en un formato legible por humanos sin agregar una biblioteca adicional a la mezcla para mostrar el "Tiempo transcurrido" en un formato amigable como este:

1
Elapsed Time: 2 Days, 5 Hours, 7 Minutes, 13 Seconds

El siguiente fragmento le proporcionará los resultados que necesita:

1
2
3
4
5
days = diff.days # Get Day
hours,remainder = divmod(diff.seconds,3600) # Get Hour
minutes,seconds = divmod(remainder,60) # Get Minute & Second
 
print(f'Elapsed Time: {days} Days, {hours} Hours, {minutes} Minutes, {seconds} Seconds.')

Salida de muestra:

1
Elapsed Time: 2 Days, 5 Hours, 7 Minutes, 13 Seconds

Ejemplo de trabajo completo:

01
02
03
04
05
06
07
08
09
10
11
from datetime import datetime
start = datetime.now()
# Then call some long running code or function here
end = datetime.now()
diff = end - start
print type(diff)
print diff
days = diff.days # Get Day
hours,remainder = divmod(diff.seconds,3600) # Get Hour
minutes,seconds = divmod(remainder,60) # Get Minute & Second
 print(f’Elapsed Time: {days} Days, {hours} Hours, {minutes} Minutes, {seconds} Seconds.')

El truco para este ejemplo / implementación es usar la función divmod en Python. La función divmod () en Python toma dos números y devuelve un par de números (tupla) que consta de su cociente y resto.

Sintaxis:

1
2
3
4
divmod(x, y)
x and y : x is numerator and y is denominator
x and y must be non complex
Returns tuple (quotient, remainder)

Ejemplos:

1
2
3
4
5
6
Input: x = 9, y = 3
Output: (3, 0)
# 3 is quotient, 0 is remainder
Input: x = 16, y = 3
Output:(5, 1)
# 5 is quotient, 1 is remainder

Si encuentra útil este artículo, considere agregarlo a favoritos, suscribirse y / o compartirlo en sus canales sociales favoritos para que otros también puedan encontrar y leer estos artículos. Hago esto por amor y pasión para compartir mis ideas, pensamientos, hallazgos y conocimientos con los demás. Así que cuanto más me ayudes a compartir, más mi contenido puede llegar a otros.

Gracias por ayudar a correr la voz.

¡Encuentra tu pasión e inspiración hoy! ¡Y ayuda a alguien más a encontrar el suyo!

Publicar un comentario

0 Comentarios