uso concurrente del espacio de trabajo in_memory en arcpy

8

Estoy usando un script de Python que elimina pequeños polígonos de una clase de entidad. Este script crea clases de entidad temporales con nombres fijos (codificados) en el espacio de trabajo "in_memory". ejemplo:

arcpy.CopyFeatures_management("in_fc","in_memory/item_a")

Es un script bastante reutilizable, así que lo uso en muchos puntos de una cadena de geoprocesamiento.

¿Estoy en peligro de que el mismo script llamado dos veces desde diferentes procesos (al mismo tiempo) tenga un conflicto en, por ejemplo, "in_memory / item_a"? ¿o los espacios de trabajo "en memoria" están separados para cada proceso?

Estoy usando ArcInfo 10.0.

Ben el oso
fuente

Respuestas:

8

Para probar su pregunta, redacté un script rápido en el que ejecuté dos copias simultáneamente, una como herramienta de script en ArcMap y otra en Pythonwin. Para mi sorpresa, no pude ejecutarlos al mismo tiempo porque se compartió el espacio de trabajo "en memoria". Sin embargo, hay una forma de evitar esto. Puede agregar una verificación de salida para determinar si el archivo en la memoria existe y nombrarlo de otra manera si es así:

i=0
check = 0
while check == 0:
    memoryFeat = "in_memory" + "\\" + "testMemoryFeature" + str(i)
    if arcpy.Exists(memoryFeat):
        i+=1
    else:
        check = 1

Esto intentará nombrar su función de memoria testMemoryFeature0. Si esa función de memoria ya existe, intentará nombrarla testMemoryFeature1, y así sucesivamente hasta que encuentre un nombre que sea suficiente.

pie azul
fuente
77
También puede usar la función arcpy.CreateUniqueName .
Alex Markov
¡Muy útil! No sabía que esto existía.
bluefoot