ArcGIS 10.1 Python AddIn Çoklu İşlem çökmelerinin kullanımı ArcMap?


20

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

Yanıtlar:


8

Paralel işlem 'gösterilenden daha kolaydır. Bunların bir düğmeye doldurulması durumunda, iki sorunu tahmin ediyorum:

  1. Birden çok iş parçacığı ArcMap UI iş parçacığını engeller veya
  2. ArcMap, veri kaynağına kendi şema kilidini koyar ve python işleminin verilere erişmesine izin vermez.

Hmm daha ileriye dönük bir sorun burada bir ArcGIS Kaynakları sayfasında belgelenmiştir . Şema kilidi suçluya benziyor.


Yaptığınız işten başka bir şey bağlamak isteyip istemediğinizden emin değilim (resmi bir belge değil, bir ArcGIS forum gönderisi).
blah238

Forum doğru bağlantıdır. Birisi daha resmi belgeler bulduğunda, bunu yayınlamaktan çekinmeyin.
WolfOdrade

Önerileriniz için teşekkür ederiz. Bunun aslında # 1'den kaynaklandığına inanıyorum. ArcMap UI için iş parçacığı blokları. Ben bir SDE veritabanı kullanıyorum, bu yüzden şema kilitleri benim sorunlarım burada değil.
kod tabanı 5000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.