Bir python eklenti aracından çok işlemli bir görev çalıştırmak istiyorum. Benim sorunum, işlemin sürekli devam etmemesidir. Temelde ArcMap'i kilitler.
İşte benim temel kod:
def function(startOID, endOID, fc):
wrksp = r"c:\temp\mp_addintest\data\test_%s.txt" % (int(startOID) + int(endOID))
# real logic removed to dumb it down
with open(wrksp, 'w') as writer:
writer.write("%s to %s from %s \n" % (startOID, endOID, fc))
return wrksp
class btnMP(object):
"""Implementation for src_addin.MPButton (Button)"""
def __init__(self):
self.enabled = True
self.checked = False
def onClick(self):
pool = None
try:
pythonExe = os.path.join(sys.exec_prefix, 'python.exe')
multiprocessing.set_executable(pythonExe)
pool = multiprocessing.Pool(4)
results = []
for i in xrange(4):
results.append(pool.apply_async(function, [str(1),
str(i),
str("test")]))
pool.close()
pool.join()
for result in results:
print result.get()
except:
del pool
print 'error'
Kodu ArcMap'ın dışında veya bir araç kutusundan çalıştırırsam, sorun olmadan çalışır, ancak mantığı bir düğmenin içine koyduğumda, arcmap'in çökmesine neden olur.
Benim tahminim ArcMap tüm python eklentileri için işlem yapıyor. Bu konuda bir çözüm var mı?
Ben de kod freeze_support () ekleyerek denedim, ama bu da bir şey yapmadı.
1
ArcMap çöküyorsa, ESRI desteğinize başvurun. onlar çoğaltabilir eğer onun bir hata kabul (ve hatta belki bir gün düzeltmek).
—
GIS-Jonathan
ArcGIS 10.x için zaten mevcut olan 5 Hizmet Paketinin tümünü yüklediniz mi? Belki bu yardımcı olacaktır
—
Sergios Kolios
OP 10.1 kullanıyor
—
Petr Krebs
Ayrıca servis paketleri birikimlidir, bu yüzden her birini arka arkaya değil, yalnızca en sonuncuyu yüklemeniz gerekir.
—
blah238
10.1 için SP1 bu hafta piyasaya sürüldü.
—
Timothy Michael