1.2 KiB
1.2 KiB
+++ title = "Hilos" weight = 5 +++
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.
{{% notice warning %}} 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. {{% /notice %}}