Estoy aprendiendo el multithreading y de pensar sobre su uso con Arcpy. El ejemplo en el que estoy trabajando no tiene mucho razones prácticas. Sin embargo, no sé por qué no funciona en la línea de "arcpy.Existe(fcPath):" aunque el SDE se está ejecutando y la clase de entidad en cuestión es accesible en ArcCatalog. No ayuda si he usado env.espacio de trabajo. Cualquier idea o sugerencia se agradece.
import threading
import arcpy
from arcpy import env
def tf(conn_string):
global tTotal
#env.workspace = conn_string
fcName = r"GIS_USER.TEST_FC"
fcPath = conn_string + "\\" + fcName
if arcpy.Exists(fcPath):
threadLock.acquire()
tTotal += 1
threadLock.release()
else:
print('%d: failed to connect to %s'%(tTotal, conn_string))
def mt(conn_string, step):
global tTotal
thread_list = []
for num in range(step):
t = threading.Thread(target=tf, args=(conn_string,))
thread_list.append(t)
t.start()
for t in thread_list:
t.join()
print "total = %d"%tTotal
tTotal = 0
conn_string = r"C:\test_conn.sde"
threadLock = threading.Lock()
mt(conn_string, 5)