Wie unterbricht man die Ausführung eines lang laufenden Prozesses in der Python-Konsole von ArcMap?
Wie unterbricht man beispielsweise eine lange Iteration wie die folgende, wenn sie einmal gestartet wurde?
for i in range(1, 50):
# some long process which takes over a minute to complete
Ich möchte den Vorgang jederzeit abbrechen, indem ich eine Tastenkombination drücke, auf eine Schaltfläche oder Ähnliches klicke, während der im Konsolenfenster eingegebene Code ausgeführt wird .
arcpy
arcmap
python-window
Alex Essilfie
quelle
quelle
Antworten:
Einfach getestet und ESC funktioniert auch nicht. ArcGIS friert nur für einen Moment ein und fährt dann fort. Es scheint keine Möglichkeit zu geben, das Beenden zu erzwingen, sobald es in der ArcGIS Python-Konsole ausgeführt wird. Sie können es auch nicht mit dem Task-Manager beenden, da der Python-Prozess dort nicht angezeigt wird.
Wenn Sie das Beenden wirklich erzwingen möchten, sollten Sie eine IDE wie IDLE verwenden, anstatt dies in der ArcGIS Python-Konsole zu tun. In IDLE können Sie zum Beispiel Ctrl+ Zoder Ctrl+ verwenden, Cum die Ausführung zu beenden.
quelle
Dies ist die Methode, die ich benutze:
Beispiel für eine kill_processx.py-Datei:
quelle
Es ist eine schlechte Praxis, das Herunterfahren mit Brute-Force-Taktiken zu erzwingen. Vielmehr sollten Sie, wie @Aragon betont hat, Ihrem Skript eine Fehlerbehandlung hinzufügen, um Komponenten zu isolieren und / oder das Skript anzuhalten, wenn bestimmte Bedingungen nicht erfüllt sind. Wie @RK hervorhebt, ist die ArcGIS-Python-Konsole für das Ausführen komplexer Skripte nahezu wertlos und sollte in der Praxis für einfache Vorgänge reserviert sein - bleiben Sie bei IDLE , Pythonwin , Pyscripter oder einem der Hosts anderer IDEs. Hier sind Diskussionen zu Ihrer Frage:
Wie verwende ich sys.exit (0) in einem Arcpy-Skript, um vorzeitig zu beenden, ohne dass eine Fehlermeldung angezeigt wird?
Beenden eines Python-Skripts
Wie stoppe ich einen Befehl oder eine Eingabeaufforderung in Python?
quelle
Ich arbeite in 10.4 und habe festgestellt, dass ich auf das Schließen-X klicken kann, während ein Skript ausgeführt wird. ArcMap fragt mich, ob ich einen Vorgang abbrechen möchte.
Ich klicke auf Ja. ArcMap fragt mich dann, ob ich vor dem Beenden speichern möchte. Ich klicke auf Abbrechen. Das Skript löst eine Tastaturunterbrechung aus.
quelle
Wenn Sie auf pythonische Weise lösen möchten, versuchen Sie Folgendes:
oder benutze:
im Detail:
ich hoffe es hilft dir ...
quelle
sys.exit()
, dass dies jedoch nicht funktioniert, wenn eine Schleife oder ein ähnlich langer Prozess ausgeführt wird.Zumindest in ArcMap 10.4 können Sie dies tun. Stellen Sie sicher, dass das Fenster "Ergebnisse" sichtbar ist. (Wenn nicht, finden Sie es unter "Geoverarbeitung"). Wenn Sie jetzt einen Befehl ausführen, wird dieser in diesem Fenster angezeigt. Klicken Sie mit der rechten Maustaste darauf und drücken Sie "Abbrechen".
quelle
Was passiert , wenn unter jeder Codezeile hinzufügen Sie eine ,
if
dass die Kontrollen ,if input()=="what ever you want in here"
dass Verwendungensys.exit
.Zum Beispiel: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata
quelle
Mit IDLE habe ich eine Datei namens "stop.py", die die einzelne Zeile enthält: "pass". Lassen Sie diese Datei in IDLE geöffnet, während ein anderes .py-Skript ausgeführt wird. Durch Klicken auf F5 im Fenster "stop.py" wird der LEERLAUF zurückgesetzt.
quelle