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):
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 ...
... i zasoby systemowe w menedżerze zadań:
Jednak kilka minut (~ 14 minut) później skrypt przestaje przetwarzać i system nie zużywa już zasobów:
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?
źródło
sys.exitfunc()
.Odpowiedzi:
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.
źródło