Manière propre d'annuler les scripts de traitement QGIS de l'interface graphique

12

J'ai écrit un script de traitement QGIS qui effectue une analyse de l'installation la plus proche. En prenant l'ensemble complet de données d'entrée (20k adresses comme points de départ, ~ 100 points cibles, réseau routier OSM avec ~ 13k linestrings), le script s'exécute environ 3 heures, et utilise donc divers indicateurs de progression, pour faire comprendre à l'utilisateur qu'il est toujours en vie (sortie du journal, barre de progression, temps restant, bandes élastiques indiquant le chemin vers l'installation la plus proche qui vient d'être traitée, capture d'écran ci-dessous):

entrez la description de l'image ici

Maintenant, je voudrais annuler le script en cours d'exécution et pour autant que je puisse voir, cela ne peut être fait qu'en [X]haut à droite dans la fenêtre de l'interface de script de traitement.

Mais ce faisant, le script reste en cours de traitement comme indiqué par les élastiques bleus ainsi que le temps de traitement et la barre de progression ...

entrez la description de l'image ici

entrez la description de l'image ici

... et les ressources système dans le gestionnaire de tâches:

entrez la description de l'image ici

entrez la description de l'image ici

Cependant, quelques minutes (~ 14min) plus tard, le script arrête le traitement et le système ne consomme plus de ressources:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

Étant donné que l'intervalle de temps entre la fermeture de la fenêtre et l'arrêt du traitement me semble assez imprévisible, ma question est: est-ce un moyen recommandé d'annuler les scripts de traitement QGIS, ou existe-t-il d'autres moyens d'annuler proprement de tels scripts à partir de l'interface graphique?

Jochen Schwarze
la source
Sûrement pas le meilleur ni le moyen le plus clair de le faire, mais je tue généralement littéralement le processus depuis le Gestionnaire des tâches de Windows: cette action a pour conséquence la fermeture de QGIS, mais aussi l'interruption du script et la sauvegarde des ressources système . Cependant, si vous voulez avoir une idée du temps restant, vous pouvez définir la barre de progression en fonction de l'itération sur les fonctionnalités (je ne sais pas si c'est ce que vous voulez).
mgri
Peut-être que ce message pourrait aider: Comment terminer correctement les scripts Python dans le cadre de traitement? . En particulier, la réponse du gène utilisant sys.exitfunc().
Joseph

Réponses:

2

À partir du shell de commande, "taskkill / f / im qgis-ltr-bin.exe / t" mettrait immédiatement fin au processus. Je ne pense pas qu'il existe une solution gui, basée sur ce que vous recherchez. Dans QGIS, si vous souhaitez terminer le processus proprement, vous devrez attendre le programme lors de la fin du processus. Mais via l'interpréteur de commandes, cela vous permettrait d'avancer immédiatement.

AlecZ
la source