30 votos

Formas de acelerar los scripts de Python que se ejecutan como herramientas de ArcGIS

Esta es una pregunta bastante general. Me pregunto qué consejos y trucos han utilizado los programadores de GIS para acelerar los scripts de arcpy que se importan a la caja de herramientas y se ejecutan.

Trabajo casi todos los días escribiendo pequeños scripts para ayudar a los usuarios no SIG de mi oficina a procesar datos SIG. He descubierto que el procesamiento de ArcGIS 10.0 en general es más lento que el de 9.3.1 y a veces se vuelve aún más lento cuando se ejecuta un script de python.

Voy a enumerar un ejemplo particular de un script que tarda más de 24 horas en ejecutarse. Es un bucle que tabula el área de un raster en un buffer para cada forma en el buffer. El buffer tiene alrededor de 7000 formas. No creo que deba ejecutarse tanto tiempo. A

while x <= layerRecords:

    arcpy.SetProgressorLabel("Tabulating Row: " + str(x) + " of " + str(ELClayerRecords))
    arcpy.SelectLayerByAttribute_management(Buff,"NEW_SELECTION", "Recno = " + str(x))                                  # Selecting the record
    TabulateArea(Buff, "Recno", MatGRID, "VALUE", ScratchWS + "/tab" + str(z) +".dbf", nMatGRIDc)                          # Tabulate the area of the single row

    arcpy.AddMessage ("          - Row: " + str(x) + " completed")
    x = x + 1
    z = z + 1

Antes de que alguien lo diga, he ejecutado el área de tabulación en todo el buffer, pero produce errores si se ejecuta en más de 1 registro. Es una herramienta defectuosa, pero tengo que usarla.

De todos modos, si alguien tiene alguna idea sobre cómo optimizar, o acelerar este script, sería muy apreciado. De lo contrario, ¿tienes algún truco de aceleración para python, cuando se utiliza en ArcGIS?

4voto

nagytech Puntos 2872

Asegúrese de eliminar cualquier import xxxx líneas que no se utilizan.

(es decir, si no está utilizando ninguna función matemática todavía tiene import Math (esto tomará algún tiempo de la carga del script)

Aunque esto no tendrá un gran impacto en los scripts individuales que se ejecutan (como el suyo), afectará a cualquier script que se ejecute con frecuencia y de forma repetitiva.

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