# Hilos

#### Ejecutar macros en otros hilos.

Las macros se ejecutan en un hilo que bloquea cualquier otro proceso dentro de la aplicación.

Si ejecutas la siguiente macro `main`, nota que no puedes hacer algo más dentro de LibreOffice durante los 5 segundos que dura el proceso.

    import easymacro as app

    def hacer_pausa(segundos):
        app.sleep(segundos)
        app.debug('He terminado')
        return

    def main():
        hacer_pausa(5)
        app.msgbox('Fin...')
        return

Hasta que aparece el cuadro de mensaje con la palabra `Fin` y lo cierras, el usuario puede seguir usando la aplicación.

### run_in_thread

Ahora ejecutamos la macro en otro hilo, “decorando” cualquier macro con `run_in_thread`

    @app.run_in_thread
    def hacer_pausa(segundos):
        app.sleep(segundos)
        app.debug('He terminado')
        return

    def main():
        hacer_pausa(5)
        app.msgbox('Fin...')
        return

Nota que ahora el mensaje aparece inmediatamente y no tras los 5 segundos.

Ponga mucha atención en no ejecutar macros en otros hilo que dependen de algo suceptible de ser cambiado o interceptado por el usuario, por ejemplo, la celda activa.