Czysty sposób na anulowanie skryptów przetwarzania QGIS z GUI

12

Napisałem skrypt przetwarzania QGIS, który przeprowadza najbliższą analizę obiektu. Biorąc pełny zestaw danych wejściowych (20 tys. Adresów jako punktów początkowych, ~ 100 punktów docelowych, sieć drogowa OSM z ~ 13 tys. Linii) skrypt działa około 3 godzin, a zatem korzysta z różnych wskaźników postępu, aby upewnić się użytkownika, że ​​jest to wciąż żywy (wyjście z dziennika, pasek postępu, pozostały czas, gumki wskazują drogę do najbliższego właśnie przetworzonego obiektu, patrz zrzut ekranu poniżej):

wprowadź opis zdjęcia tutaj

Teraz chciałbym anulować działający skrypt i, o ile widzę, można to zrobić tylko z [X]prawym górnym rogu w oknie GUI skryptu przetwarzania.

Ale robiąc to, skrypt pozostaje przetwarzany, jak wskazują niebieskie gumki, a także czas przetwarzania i pasek postępu ...

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

... i zasoby systemowe w menedżerze zadań:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Jednak kilka minut (~ 14 minut) później skrypt przestaje przetwarzać i system nie zużywa już zasobów:

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Ponieważ czas między zamknięciem okna a zatrzymaniem przetwarzania wydaje mi się dość nieprzewidywalny, moje pytanie brzmi: czy jest to zalecany sposób anulowania skryptów przetwarzających QGIS, czy też istnieją inne sposoby czystego anulowania takich skryptów z GUI?

Jochen Schwarze
źródło
Z pewnością nie jest to najlepszy ani najczystszy sposób, aby to zrobić, ale generalnie dosłownie zabijam proces z Menedżera zadań Windows: w wyniku tej akcji QGIS zostaje zamknięty, ale także przerywanie skryptu i oszczędzanie zasobów systemowych . Jeśli jednak chcesz mieć pojęcie o pozostałym czasie, możesz ustawić pasek postępu zgodnie z iteracją funkcji (nie wiem, czy tego właśnie chcesz).
mgri
Być może ten post może pomóc: Jak poprawnie zakończyć skrypty Pythona w środowisku Processing? . W szczególności przy użyciu odpowiedzi genu sys.exitfunc().
Joseph

Odpowiedzi:

2

Z poziomu powłoki poleceń polecenie „taskkill / f / im qgis-ltr-bin.exe / t” natychmiast zakończy proces. Nie sądzę, aby istniało rozwiązanie GUI oparte na tym, do czego zmierzasz. W QGIS, jeśli chcesz zakończyć proces w czysty sposób, musisz poczekać na program po zakończeniu procesu. Ale za pomocą powłoki poleceń pozwoli to od razu przejść do przodu.

AlecZ
źródło