Чистый способ отменить скрипты обработки QGIS из графического интерфейса

12

Я написал скрипт обработки QGIS, который выполняет анализ ближайшего пункта обслуживания. Взяв полный набор входных данных (20 тыс. Адресов в качестве начальных точек, ~ 100 целевых точек, дорожная сеть OSM с ~ 13 тыс. Линий трасс), сценарий выполняется около 3 часов и поэтому использует различные индикаторы прогресса, чтобы убедить пользователя в том, что он все еще жив (вывод журнала, индикатор выполнения, оставшееся время, резинки показывают путь к ближайшей обработке, см. скриншот ниже):

введите описание изображения здесь

Теперь я хотел бы отменить запущенный скрипт, и, насколько я вижу, это можно сделать только с [X]правым верхним краем в окне графического интерфейса скрипта обработки.

Но при этом сценарий продолжает обрабатываться, на что указывают синие резиновые полосы, а также время обработки и индикатор выполнения ...

введите описание изображения здесь

введите описание изображения здесь

... и системные ресурсы в диспетчере задач:

введите описание изображения здесь

введите описание изображения здесь

Однако через пару минут (~ 14 минут) сценарий прекращает обработку, и система больше не потребляет ресурсы:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Поскольку промежуток времени между закрытием окна и остановкой обработки мне кажется довольно непредсказуемым, у меня вопрос: это рекомендуемый способ отмены сценариев обработки QGIS или есть другие способы чистого удаления таких сценариев из графического интерфейса?

Йохен Шварце
источник
Конечно, это не самый лучший и не самый ясный способ сделать это, но я обычно буквально убиваю процесс из диспетчера задач Windows: это действие приводит к закрытию QGIS, но также к прерыванию сценария и экономии системных ресурсов. , Однако, если вы хотите получить представление об оставшемся времени, вы можете установить индикатор выполнения в соответствии с итерацией по функциям (я не знаю, хотите ли вы этого).
Мгри
Возможно, этот пост может помочь: Как правильно завершить работу скриптов Python в среде обработки? , В частности, ответ гена с помощью sys.exitfunc().
Джозеф

Ответы:

2

Из командной оболочки «taskkill / f / im qgis-ltr-bin.exe / t» немедленно завершит процесс. Я не думаю, что есть решение с графическим интерфейсом, основанное на том, что вы собираетесь, хотя. В QGIS, если вы хотите аккуратно завершить процесс, вам придется ждать, пока программа завершит процесс. Но через командную оболочку это позволит вам сразу же двигаться вперед.

AlecZ
источник