Forma limpia de cancelar scripts de procesamiento QGIS desde la interfaz gráfica de usuario

12

He escrito un script de procesamiento QGIS que lleva a cabo un análisis de instalación más cercano. Tomando el conjunto completo de datos de entrada (20k direcciones como puntos de inicio, ~ 100 puntos de destino, red vial OSM con ~ 13k cadenas de líneas) el script ejecuta aproximadamente 3 horas y, por lo tanto, utiliza varios indicadores de progreso, para asegurar al usuario que es todavía vivo (salida de registro, barra de progreso, tiempo restante, bandas de goma que indican el camino a la instalación más cercana recién procesada, captura de pantalla de cp. a continuación):

ingrese la descripción de la imagen aquí

Ahora me gustaría cancelar la secuencia de comandos en ejecución y, por lo que puedo ver, esto solo se puede hacer con la [X]parte superior derecha en la ventana de gui de la secuencia de comandos de procesamiento.

Pero al hacerlo, el script sigue procesándose como lo indican las bandas de goma azules, así como el tiempo de procesamiento y la barra de progreso ...

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

... y los recursos del sistema en el administrador de tareas:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Sin embargo, un par de minutos (~ 14min) más tarde, el script detiene el procesamiento y el sistema ya no consume más recursos:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Dado que el intervalo de tiempo entre cerrar la ventana y detener el procesamiento me parece bastante impredecible, mi pregunta es: ¿Es esta una forma recomendada de cancelar los scripts de procesamiento de QGIS, o hay otras formas de cancelar limpiamente dichos scripts de la interfaz gráfica de usuario?

Jochen Schwarze
fuente
Seguramente no es la mejor ni la forma más clara de hacerlo, pero generalmente elimino literalmente el proceso del Administrador de tareas de Windows: esta acción tiene como consecuencia el cierre de QGIS, pero también la interrupción del script y el ahorro de los recursos del sistema . Sin embargo, si desea tener una idea del tiempo restante, puede establecer la barra de progreso de acuerdo con la iteración sobre las características (no sé si esto es lo que desea).
mgri
Quizás esta publicación pueda ayudar: ¿Cómo terminar los scripts de Python en Processing Framework correctamente? . En particular, la respuesta del gen usando sys.exitfunc().
Joseph

Respuestas:

2

Desde el shell de comandos, "taskkill / f / im qgis-ltr-bin.exe / t" terminaría el proceso de inmediato. Sin embargo, no creo que haya una solución gui, basada en lo que estás buscando. En QGIS, si desea finalizar el proceso limpiamente, tendría que esperar al programa al finalizar el proceso. Pero a través del comando shell esto le permitiría avanzar de inmediato.

AlecZ
fuente