# Timer

El `timer` siempre se ejecuta en otro hilo.

### once

Ejecutar macro una sola vez en X segundos.

    import easymacro as app

    NOMBRE = 'reloj'

    def mostrar_hora():
        app.debug(app.dates.now_time)
        return

    def iniciar_conteo():
        segundos = 5
        macro = {
            'library': 'test',
            'name': 'mostrar_hora',
        }
        app.timer.once(NOMBRE, segundos, macro)
        return

    def main(args=None):
        iniciar_conteo()
        return

### cancel

Cancelar ejecución, antes del tiempo establecido.

    def main(args=None):
        iniciar_conteo()
        app.sleep(3)
        detener_conteo()
        return

    def detener_conteo():
        app.timer.cancel(NOMBRE)
        return

    16/08/2022 21:18:50 - INFO - Event: "reloj", started... execute in 60 seconds
    16/08/2022 21:18:55 - INFO - Cancel event: "reloj", ok...

### start

Ejecutar macro cada X segundos.

    NOMBRE = 'reloj'

    def mostrar_hora():
        app.debug(app.dates.now_time)
        return

    def iniciar_reloj():
        segundos = 1
        macro = {
            'library': 'test',
            'name': 'mostrar_hora',
        }
        app.timer.start(NOMBRE, segundos, macro)
        return

    def main(args=None):
        iniciar_reloj()
        return

### stop

Detener timer.

    def detener_reloj():
        app.timer.stop(NOMBRE)
        return

    16/08/2022 21:25:37 - INFO - Timer 'reloj' started, execute macro: 'mostrar_hora'
    16/08/2022 21:25:38 - DEBUG - 21:25:38
    16/08/2022 21:25:39 - DEBUG - 21:25:39
    ...
    16/08/2022 21:25:47 - DEBUG - 21:25:47
    16/08/2022 21:25:48 - DEBUG - 21:25:48
    16/08/2022 21:25:48 - INFO -    Timer stopped...

Asegurese siempre de establecer un nombre único para cada timer.

Asegurese siempre de ejecutar macros que NO bloqueen la interfaz del usuario.