Quiero alternar en el tiempo la ejecución de dos funciones de forma continua.
El siguiente diagrama de secuencia muestra una idea de lo que quiero llevar a cabo:
A fin de evitar una “chapuza” como puede ser un bucle while(True) utilizando time.sleep() mi primera aprximación en Python ha sido utilizar la opción threaring.Timer. A continuación muestro un código de ejemplo:
import threading delayOff = 2 delayOn = 0.5 counter = 0 def tOn(): #Acciones en estado tOn #. #. #. global counter counter+=1 print("Estoy en On - counter = " + str(counter)) #Timers timer_on = threading.Timer(delayOn,tOff) #Start the timers timer_on.start() def tOff(): #Acciones en estado tOff #. #. #. global counter counter+=1 print("Estoy en Off - counter = " + str(counter)) #Timers timer_off = threading.Timer(delayOff,tOn) #Start the timers timer_off.start() #Iniciamos la serie llamando a tOn tOn()
Que otras alternativas existen? Cuales son los pros y contras de esta solución?
Muchas gracias por la ayuda.