4 votos

Multithreading en Arcpy

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)

8voto

Paul Puntos 555

Esto simplemente no funciona, vas a tener que mirar en multiprocessing si desea paralelismo. ArcGIS Desktop/Servidor la arquitectura se basa en la COM Apartamento de un Único Subproceso modelo, lo que significa que cualquier objeto creado en un subproceso puede ser utilizado solamente en ese hilo. Usted puede crear un nuevo ArcObjects objeto gráfico en otro hilo (ver los enlaces de documentación), en la que se le había necesidad de utilizar comtypes en el hilo de otro(s) y el uso de ArcObjects a través de la API generada por comtypes. Esto no es para los débiles de corazón.

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