Alternar ejecución de dos funciones en el tiempo

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:

introducir la descripción de la imagen aquí

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.