9 votos

Python.exe ha dejado de funcionar

Una secuencia de comandos de python fue escrito hace aproximadamente 18 meses por una persona que ya ha dejado. Se produjo la necesaria salidas de entonces. He sido invitado a correr de nuevo, pero con diferentes (resolución más fina) entradas de datos. El conjunto de datos de entrada se ha dividido en 20 de los sub-conjuntos de aprox de 2.700 puntos de datos cada uno. Sin embargo, la secuencia de comandos se bloquea ("python.exe ha dejado de funcionar") después de aprox 300 puntos de datos han sido procesados (rango 295 306 y NO siempre falla en el mismo registro).

Como su edad(ish), el guión fue escrito usando arcgisscripting y no arcpy. Ampliamente se hace lo siguiente usando los cursores:

  1. Para un punto dado, calcular el costo de la distancia (usando gp.CostDistance_sa) con un límite de 60 minutos el tiempo de viaje.

  2. Llamadas gp.ExtractValuesToPoints_sa para extraer todos los valores individuales en cada punto de datos y salidas de una clase de entidad en una geodatabase de archivos.

  3. Lee la clase de entidad creada en b) anterior y escribe los valores a un archivo CSV (la omisión de cualquiera de los puntos con "Sin Datos" (valor -9999)).

Repite 1, 2 y 3 para el resto de puntos de datos en el archivo de entrada.

El tiempo de procesamiento es de aprox. 1 minuto por cada punto de datos en promedio. Aquí están algunas de las especificaciones técnicas pertinentes:

  • El PC tiene un procesador quad core Intel i7-2720QM CPU funcionando a 2.20 GHz con 8GB de RAM con Windows 7 (64 bits).

  • La versión de Python es 2.6.6 (shell también a los estados a "[MSC v,1500 32 bits (Intel)] en win32).

  • ArcMap 10.0 (SP4) también está instalado.

He intentado que se ejecuta en un PC diferente (hasta ahora sin que se caiga). Actualmente se está ejecutando el trabajo con éxito (pero más lentamente) en un PC más antiguo y ha llegado a 419 registros sin que se caiga. Las especificaciones de este equipo son:

  • Intel Core 2 DUO E7500 procesador funcionando a 2,93 GHz con 4 GB de RAM y 64 bits de Windows 7.

  • La versión de Python 2.5.1 (shell también a los estados a "[MSC v,1310 de 32 bits (Intel)] en win32).

  • ArcMap 9.3 está instalado (no hay mención de ningún Service Pack).

Por favor, alguien puede ofrecer algunos consejos acerca de por qué el guión parece funcionar por un tiempo después del accidente y cómo resolverlo? El hecho de que en un PC diferente aparece (hasta ahora) para manejar la secuencia de comandos sugiere algo "medio ambiente".

Gracias de anticipación.


Gracias a todos por sus sugerencias. Voy a tratar de estos. Como una actualización, el PC que ejecuta ARCGIS 9.3 se sigue correctamente el procesamiento de los datos y ha alcanzado los 1.300 puntos de datos procesados (y sigue contando). Un colega también corrieron los datos en su PC de ARCGIS 10.1 - se estrelló después de 267 registros en dos ocasiones separadas. Si bien no es concluyente, el común denominador parece ser que el Arco 9.3 proceso de los datos, pero de Arco 10.x no.

Más contribuciones recibidas con gratitud.

1voto

ZeroSignal Puntos 1391

Si ejecuta el administrador de tareas y ver el ejecutable de python aumento de la memoria y de ir de más de 1 gb antes de que se muere, entonces usted puede beneficiarse de la actualización a 10.1 de 64 bits de geoprocesamiento.

Por rendimiento, si usted está usando los cursores, usted puede beneficiarse de la nueva arcpy.da cursores. http://resources.arcgis.com/en/help/main/10.1/index.html#//018w00000008000000

He actualizado un proyecto para el uso de arcpy.da y fue un 2 magnitud de la mejora.

1voto

Silveri Puntos 131

Este es un simplemente un arcpy error. Usted puede tratar de evitar el uso de los pasos que están causando el accidente, pero generalmente sucede bajo diferentes herramientas cuando se utiliza para el proceso a través de una larga lista de datos. La única solución que he encontrado es hacer que mi script para guardar su progreso a lo largo de el camino a la disco, por lo que si reinicia el proceso, que sabe donde recogida de. Si, a continuación, deshabilitar el depurador de windows mensaje por la modificación del registro (ver más abajo), entonces usted puede simplemente ejecutar repetidamente una secuencia de comandos en cmd.exe hasta que se complete la totalidad del lote sin tener que cerrar el proceso de forma manual cada vez que entre.

Sé que esto es una tremenda solución, pero es muy raro tener una biblioteca de python matar el intérprete de python.

DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\DontShowUI = "1"
DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\Disabled = "1"

0voto

Jeff Mc Puntos 1741

¿Se ha comprobado cómo el guión maneja cursores? Mis aplicaciones a menudo cuelguen cuando se me olvida cerrarlos utilizando explícita del row, cursor , a veces solamente después de algún tiempo.

Si eso no ayuda, te sugiero utilizar una porción más pequeña de código o datos.

-1voto

Shawn Anderson Puntos 482

Si no lo es ya, que me gustaría utilizar una adecuada IDE de Python.

Utilizamos PyCharm Profesional por JetBrains .

Casualmente, hoy, mientras que las pruebas de algunos de nuestros viejos scripts que estamos actualizando, me he encontrado con un problema similar, donde el intérprete de python accidente en vez de tirar un error. Yo era capaz de determinar la parte exacta del código y establecer un breakpoint para determinar que uno de mis intermedio de los conjuntos de datos faltaba una proyección que fue la causa del fracaso.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X