Как можно прервать выполнение длительного процесса в консоли Python ArcMap?
Например, как прервать длинную итерацию, подобную приведенной ниже, после ее запуска?
for i in range(1, 50):
# some long process which takes over a minute to complete
Я хочу остановить процесс в любое время, нажимая комбинацию клавиш, нажимая кнопку или что-то подобное, пока выполняется код, введенный мной в окне консоли .
arcpy
arcmap
python-window
Алекс Эссильфи
источник
источник
Ответы:
Просто проверил и ESC не работает. ArcGIS просто на мгновение зависает, а затем продолжается. Кажется, не существует способа принудительно завершить его, когда он запустится в консоли ArcGIS Python. Вы не можете убить его с помощью диспетчера задач, так как процесс Python там не отображается.
Если вы действительно хотите иметь возможность принудительно завершить его, вы можете рассмотреть возможность использования IDE, такой как IDLE, а не делать это в консоли Python ArcGIS. Например, в IDLE вы можете использовать Ctrl+ Zили Ctrl+ Cдля прекращения выполнения.
источник
Это метод, который я использую:
Пример файла kill_processx.py:
источник
Плохо практиковать принудительное отключение, используя тактику грубой силы. Скорее, как указал @Aragon, вы должны добавить обработку ошибок в ваш скрипт, чтобы изолировать компоненты и / или остановить скрипт, если определенные условия не выполняются. Как указывает @RK, Python-консоль ArcGIS практически бесполезна для запуска сложных сценариев и на практике должна быть зарезервирована для простых операций - придерживайтесь IDLE , pythonwin , pyscripter или любого другого хоста других IDE. Вот обсуждения, связанные с вашим вопросом:
Как я могу использовать sys.exit (0) в скрипте arcpy для досрочного выхода без появления сообщения об ошибке?
Завершение скрипта Python
Как остановить команду или приглашение в Python?
источник
Я работаю в 10.4, и я обнаружил, что могу нажать кнопку закрытия X во время выполнения скрипта. ArcMap спросит меня, хочу ли я отменить операцию.
Я нажимаю Да. ArcMap затем спрашивает меня, хочу ли я сохранить перед выходом. Я нажимаю Отмена. Скрипт выдает прерывание клавиатуры.
источник
если вы хотите решить с помощью питона, попробуйте это:
или используйте:
в деталях:
я надеюсь, что это поможет вам ...
источник
sys.exit()
но это не работает, когда выполняется цикл или аналогичный процесс.По крайней мере, в ArcMap 10.4 вы можете сделать это. Убедитесь, что окно «Результаты» видно. (Если не найти его в разделе «Геообработка»). Теперь, если у вас есть запущенная команда, она появится в этом окне. Щелкните правой кнопкой мыши по нему и нажмите «Отмена».
источник
Что делать, если под каждой строкой кода вы добавляете
if
проверку,if input()=="what ever you want in here"
которая используетsys.exit
.Например: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata
источник
Используя IDLE, у меня есть файл с именем «stop.py», который содержит одну строку: «pass». Держите этот файл открытым в режиме IDLE, пока выполняется другой скрипт .py. Нажатие F5 в окне «stop.py» сбрасывает IDLE.
источник