¿Cómo se interrumpe la ejecución de un proceso de larga duración en la consola de Python de ArcMap?
Por ejemplo, ¿cómo se rompe una iteración larga como la siguiente una vez que se inicia?
for i in range(1, 50):
# some long process which takes over a minute to complete
Quiero detener el proceso en cualquier momento que desee presionando una combinación de teclado, haciendo clic en un botón o algo similar mientras se ejecuta el código que ingresé en la ventana de la consola .
arcpy
arcmap
python-window
Alex Essilfie
fuente
fuente
Respuestas:
Solo lo probé y ESC tampoco funciona. ArcGIS simplemente se congela por un momento y luego continúa. No parece haber una manera de forzar el cierre una vez que se ejecuta en la consola Python de ArcGIS. No puede eliminarlo con el Administrador de tareas, ya que el proceso de Python no aparece allí.
Si realmente quiere poder forzar el cierre, puede considerar usar un IDE como IDLE en lugar de hacerlo en la consola de ArcGIS Python. En IDLE, por ejemplo, puede usarCtrl + Zo Ctrl+ Cpara terminar la ejecución.
fuente
Este es el método que uso:
ejemplo de un archivo kill_processx.py:
fuente
Es una mala práctica forzar el apagado utilizando tácticas de fuerza bruta. Más bien, como señaló @Aragon, debe agregar el manejo de errores a su secuencia de comandos para aislar los componentes y / o detener la secuencia de comandos si no se cumplen ciertas condiciones. Como señala @RK, la consola Python de ArcGIS no tiene ningún valor para ejecutar scripts complejos y, en la práctica, debe reservarse para operaciones simples: quédese con IDLE , pythonwin , pyscripter o cualquiera de los hosts de otros IDEs. Aquí hay discusiones relacionadas con su pregunta:
¿Cómo uso sys.exit (0) en un script arcpy para salir temprano sin que aparezca un mensaje de error?
Terminar un script de Python
¿Cómo detener un comando o aviso en Python?
fuente
Estoy trabajando en 10.4, y descubrí que puedo hacer clic en cerrar X mientras se ejecuta un script. ArcMap me preguntará si deseo cancelar una operación.
Hago clic en Sí. ArcMap luego me pregunta si quiero guardar antes de salir. Hago clic en Cancelar. El guión arroja una interrupción de teclado.
fuente
si quieres resolverlo de manera pitónica, prueba esto:
o usar:
en detalle:
Espero que te ayude...
fuente
sys.exit()
que eso no funciona cuando se ejecuta un bucle o un proceso similarmente largo.Al menos en ArcMap 10.4, puede hacer esto. Asegúrese de que la ventana "Resultados" esté visible. (Si no lo encuentra en "Geoprocesamiento"). Ahora, si tiene un comando ejecutándose, aparecerá en esta ventana. Haga clic derecho sobre él y presione "cancelar".
fuente
¿Qué pasa si debajo de cada línea de código agrega un
if
que compruebaif input()=="what ever you want in here"
que utilizasys.exit
?Por ejemplo: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata
fuente
Usando IDLE, tengo un archivo llamado "stop.py" que contiene la única línea: "pass". Mantenga este archivo abierto en IDLE mientras se ejecuta otro script .py. Al hacer clic en F5 en la ventana "stop.py" se restablece IDLE.
fuente