Jak można przerwać wykonywanie długotrwałego procesu w konsoli Pythona ArcMap?
Na przykład, jak przerwać długą iterację, taką jak poniżej, po jej uruchomieniu?
for i in range(1, 50):
# some long process which takes over a minute to complete
Chcę zatrzymać proces w dowolnym momencie, naciskając kombinację klawiszy, klikając przycisk lub coś podobnego, gdy kod, który wprowadziłem w oknie konsoli, jest uruchomiony .
arcpy
arcmap
python-window
Alex Essilfie
źródło
źródło
Odpowiedzi:
Właśnie go przetestowałem i ESC też nie działa. ArcGIS po prostu zawiesza się na chwilę, a następnie kontynuuje. Wydaje się, że nie ma sposobu, aby wymusić zamknięcie go po uruchomieniu w konsoli ArcGIS Python. Nie możesz go zabić za pomocą Menedżera zadań, ponieważ proces Pythona tam się nie pojawia.
Jeśli naprawdę chcesz wymusić jego zamknięcie, możesz rozważyć użycie IDE, takiego jak IDLE, zamiast robić to w konsoli ArcGIS Python. Na przykład w IDLE możesz użyć Ctrl+ Zlub Ctrl+, Caby zakończyć wykonywanie.
źródło
Oto metoda, której używam:
przykład pliku kill_processx.py:
źródło
Wymuszanie zamknięcia przy użyciu taktyk brutalnej siły jest złą praktyką. Raczej, jak wskazał @Aragon, należy dodać obsługę skryptów do skryptu, aby wyodrębnić komponenty i / lub zatrzymać skrypt, jeśli nie zostaną spełnione określone warunki. Jak wskazuje @RK, konsola python ArcGIS jest prawie bezwartościowa do uruchamiania skomplikowanych skryptów i, w praktyce, powinna być zarezerwowana dla prostych operacji - trzymaj się IDLE , pythonwin , pyscripter lub dowolnego z wielu innych IDE. Oto dyskusje związane z Twoim pytaniem:
Jak użyć sys.exit (0) w skrypcie arcpy, aby wyjść wcześniej bez wyświetlania komunikatu o błędzie?
Zakończenie skryptu Python
Jak zatrzymać polecenie lub monit w Pythonie?
źródło
Pracuję w wersji 10.4 i stwierdziłem, że mogę kliknąć zamknij X podczas działania skryptu. ArcMap zapyta mnie, czy chcę anulować operację.
Klikam Tak. ArcMap pyta mnie, czy chcę zapisać przed wyjściem. Klikam Anuluj. Skrypt generuje przerwanie klawiatury.
źródło
jeśli chcesz rozwiązać w pythonowy sposób, spróbuj tego:
albo użyj:
szczegółowo:
Mam nadzieję, że Ci to pomoże...
źródło
sys.exit()
tym, ale to nie działa, gdy działa pętla lub podobnie długi proces.Możesz to zrobić przynajmniej w ArcMap 10.4. Upewnij się, że okno „Wyniki” jest widoczne. (Jeśli nie, znajdź go w „Geoprocessing”). Teraz, jeśli masz uruchomione polecenie, pojawi się ono w tym oknie. Kliknij go prawym przyciskiem myszy i naciśnij „anuluj”.
źródło
Co jeśli pod każdym wierszem kodu dodasz
if
sprawdzający,if input()=="what ever you want in here"
który używasys.exit
.Na przykład: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata
źródło
Korzystając z IDLE, mam plik o nazwie „stop.py”, który zawiera pojedynczą linię: „pass”. Trzymaj ten plik otwarty w IDLE, gdy uruchomiony jest inny skrypt .py. Kliknięcie F5 w oknie „stop.py” resetuje IDLE.
źródło