Bereinigte Methode zum Abbrechen von QGIS-Verarbeitungsskripten von GUI

12

Ich habe ein QGIS-Verarbeitungsskript geschrieben, das eine Analyse der nächstgelegenen Einrichtung durchführt. Unter Verwendung des vollständigen Eingabedatensatzes (20.000 Adressen als Startpunkte, ~ 100 Zielpunkte, OSM-Straßennetz mit ~ 13.000 Linestrings) dauert das Skript etwa 3 Stunden und verwendet daher verschiedene Fortschrittsanzeigen, um dem Benutzer die Gewissheit zu geben, dass dies der Fall ist noch am Leben (Protokollausgabe, Fortschrittsbalken, verbleibende Zeit, Gummibänder, die den Weg zur nächsten gerade bearbeiteten Einrichtung anzeigen, siehe Screenshot unten):

Bildbeschreibung hier eingeben

Jetzt möchte ich das laufende Skript abbrechen und soweit ich sehen kann, geht das nur mit [X] oben rechts im Bearbeitungsskript-GUI-Fenster erfolgen.

Dabei wird das Skript weiterhin verarbeitet, wie dies durch die blauen Gummibänder sowie die Verarbeitungszeit und den Fortschrittsbalken angezeigt wird.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

... und die Systemressourcen im Task-Manager:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Einige Minuten (~ 14 Minuten) später stoppt das Skript jedoch die Verarbeitung und das System verbraucht keine Ressourcen mehr:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Da die Zeitspanne zwischen dem Schließen des Fensters und dem Beenden der Verarbeitung für mich ziemlich unvorhersehbar erscheint, lautet meine Frage: Ist dies eine empfohlene Methode, um QGIS-Verarbeitungsskripte abzubrechen, oder gibt es andere Möglichkeiten, um solche Skripte sauber von der Benutzeroberfläche abzubrechen?

Jochen Schwarze
quelle
Sicherlich nicht die beste und klarste Möglichkeit, aber ich beende den Vorgang im Windows Task-Manager im Allgemeinen buchstäblich: Diese Aktion hat das Schließen von QGIS zur Folge, aber auch die Unterbrechung des Skripts und die Einsparung von Systemressourcen . Wenn Sie jedoch eine Vorstellung von der verbleibenden Zeit haben möchten, können Sie den Fortschrittsbalken entsprechend der Iteration der Funktionen einstellen (ich weiß nicht, ob Sie dies möchten).
29.
Vielleicht kann dieser Beitrag helfen: Wie kann man Python-Skripte im Processing Framework richtig beenden? . Insbesondere Genes Antwort mit sys.exitfunc().
Joseph

Antworten:

2

In der Befehlsshell würde "taskkill / f / im qgis-ltr-bin.exe / t" den Prozess sofort beenden. Ich glaube nicht, dass es eine GUI-Lösung gibt, die davon abhängt, was Sie anstreben. Wenn Sie in QGIS den Prozess sauber beenden möchten, müssen Sie beim Beenden des Prozesses auf das Programm warten. Über die Befehlsshell können Sie sich jedoch sofort vorwärts bewegen.

AlecZ
quelle