#-------------------------------------
# Modulo..: Retraso no bloqueante
# Descrip.: Dos metodos de pausa sin bloquear
# - uso de time.ticks_ms()
# - uso de time.time()
#
# Version.: 1.0
# Ref.....: https://stackoverflow.com/questions/68444195/how-to-make-non-blocking-timer-in-python
#
#
# Observ..: Al parecer el metodo 1 es mas preciso que el metodo 2
# - resolucion del metodo 1: mili segundos
# - resolucion del metodo 2: segundos
#
#-------------------------------------
print("\nInicia el programa\n")
import time
cont = 0
tmpoInicio = time.ticks_ms()
tmpoPausa = 2000 #pausa de 2000ms (2 segundos)
def mdbPausa1(duracion_ms):
global cont
inicio = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), inicio) <= duracion_ms:
cont += 1
print(".", end="")
# pass #Opcional, si no hay instrucciones anteriores
def mdbPausa2(duracion):
global cont
tmpoInicio = time.time()
tmpoActual = time.time()
while (tmpoActual - tmpoInicio) <= duracion:
cont += 1
print(":", end="")
tmpoActual = time.time()
# pass #Opcional, si no hay instrucciones anteriores
#Ejemplo metodo 1
print("Inicio metodo 1", end="")
mdbPausa1(tmpoPausa)
tmpoFinal = time.ticks_ms()
print("\nHora inicial.........:", tmpoInicio)
print("Hora final...........:", tmpoFinal)
print("Diferencia...........:", tmpoFinal - tmpoInicio)
print("Nro Iteraciones......:", cont)
#Ejemplo metodo 2
cont = 0
tmpoInicio = time.ticks_ms()
tmpoPausa = 2 #pausa de 2 segundos
print("\n\nInicio metodo 2", end="")
mdbPausa2(tmpoPausa)
tmpoFinal = time.ticks_ms()
print("\nHora inicial.........:", tmpoInicio)
print("Hora final...........:", tmpoFinal)
print("Diferencia...........:", tmpoFinal - tmpoInicio)
print("Nro Iteraciones......:", cont,"\n")