easymacro/doc/docs/tools/timer.md

1.8 KiB

El timer siempre se ejecuta en otro hilo.

once

Ejecutar macro una sola vez en X segundos.

!!! tip "Atención"

Asegurese siempre de establecer un nombre único para cada timer.
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(2)
    detener_conteo()
    return

def detener_conteo():
    app.timer.cancel(NOMBRE)
    return
16/08/2022 21:18:50 - INFO - Event: "reloj", started... execute in 5 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...

!!! warning "Cuidado"

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