easymacro/docs/es/docs/tools/threads.md

48 lines
1.2 KiB
Markdown
Raw Normal View History

2023-04-23 11:31:58 -06:00
## Ejecutar macros en otros hilos.
2022-08-16 22:45:11 -05:00
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.
2023-04-23 11:31:58 -06:00
```py
2022-08-16 22:45:11 -05:00
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
```
2023-04-23 11:31:58 -06:00
Hasta que aparece el cuadro de mensaje con la palabra `Fin` y lo cierras, el usuario puede seguir usando la aplicación. En algunos casos no queremos esto, para ello se usan los hilos de ejecución.
<br>
2022-08-16 22:45:11 -05:00
2023-04-23 11:31:58 -06:00
### **run_in_thread**
2022-08-16 22:45:11 -05:00
Ahora ejecutamos la macro en otro hilo, "decorando" cualquier macro con `run_in_thread`
2023-04-23 11:31:58 -06:00
```py
2022-08-16 22:45:11 -05:00
@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.
2023-04-23 11:31:58 -06:00
!!! warning "Cuidado"
Ponga mucha atención en **no ejecutar macros en otros hilos** que dependen de algo suceptible de ser cambiado o interceptado por el usuario, por ejemplo, la celda activa.
<br>