Si usted está usando Arcpy de secuencias de comandos, los datos de bloqueo de problemas se han vuelto aún más problemática con la 10.1.
Si los cierres están siendo creados por el código, entonces no limpiar después de ti mismo. Liberación de todas las referencias a las clases de entidad, las áreas de trabajo, cursores, etc. Los bloqueos se quitan cuando no se tienen más referencias a los objetos están bloqueados.
Bien, esa es la forma en que debería funcionar, pero rara vez lo hace. Normalmente un código de trabajo de vez en cuando, pero a menudo accidente inexplicablemente en diferentes lugares.
El problema parece ser que los bloqueos se acaba de dejar sentado allí `por un tiempo', pero el código se ejecuta mucho más rápido que la velocidad a la que los bloqueos son eliminados. Sin embargo, algunos de los incorporada Arco de herramientas parecen forzar cerraduras para ser liquidados en la demanda (como los bloqueos se aplican a toda la GDBs todos a la vez, un bloqueo que le impide trabajar con cualquiera de las Clases de entidad). Estas herramientas son de arcpy.Compact_management() y arcpy.Existe().
Aquí es un poco la función que utilizo dentro de mi código que ha aumentado la fiabilidad (para una secuencia de comandos que crea y edita varios GDBs Clases de entidad y dentro de ellos):
def clearWSLocks(inputWS):
'''Attempts to clear locks on a workspace, returns stupid message.'''
if all([arcpy.Exists(inputWS), arcpy.Compact_management(inputWS), arcpy.Exists(inputWS)]):
return 'Workspace (%s) clear to continue...' % inputWS
else:
return '!!!!!!!! ERROR WITH WORKSPACE %s !!!!!!!!' % inputWS
Se utiliza simplemente pasando el área de trabajo (GDB) ruta de acceso a la función, y debe realizarse después de cada operación en el área de trabajo (es decir, GDB creación) o Clases de entidad dentro del espacio de trabajo (es decir, los Cursores, la adición de campos, cálculos, etc.). Por ejemplo (que se muestra aquí como una secuencia de comandos independiente, con la función en la parte superior; para utilizar la función de copiar y pegar entre las importaciones y el programa actual, como se muestra aquí):
import arcpy
def clearWSLocks(inputWS):
'''Attempts to clear locks on a workspace, returns stupid message.'''
if all([arcpy.Exists(inputWS), arcpy.Compact_management(inputWS), arcpy.Exists(inputWS)]):
return 'Workspace (%s) clear to continue...' % inputWS
else:
return '!!!!!!!! ERROR WITH WORKSPACE %s !!!!!!!!' % inputWS
GDBpath = 'C:/Temp/'
GDBname = 'Test.gdb'
tableName = 'SweetFC'
arcpy.CreateFileGDB_management(GDBpath, GDBname)
print(clearWSLocks(GDBpath+GDBname))
arcpy.CreateTable_management(GDBpath+GDBname, tableName)
print(clearWSLocks(GDBpath+GDBname))
# etc....