python.exe çalışmayı durdurdu


9

Bir python betiği yaklaşık 18 ay önce şimdi terk etmiş bir kişi tarafından yazıldı. Daha sonra gerekli çıktıları üretti. Tekrar çalıştırmam istendi, ancak farklı (daha ince çözünürlük) veri girişleriyle. Giriş veri kümesi, her biri yaklaşık 2.700 veri noktası olan 20 alt kümeye bölünmüştür. Ancak, yaklaşık 300 veri noktası işlendikten sonra komut dosyası çöker ("python.exe çalışmayı durdurdu") (aralık 295 ile 306 arasındadır ve her zaman aynı kayıtta ÇALIŞMAZ).

Eski (ish) olarak, komut dosyası arcpy değil arcgisscripting kullanılarak yazılmıştır. Genel olarak imleçleri kullanarak aşağıdakileri yapar:

  1. Belirli bir nokta için maliyet mesafesini (gp.CostDistance_sa kullanarak) 60 dakikalık bir yolculuk süresi ile hesaplayın.
  2. Her veri noktasında tek tek tüm değerleri ayıklamak için gp.ExtractValuesToPoints_sa öğesini çağırır ve bir dosya sınıfını dosya coğrafi veritabanına verir.
  3. Yukarıdaki b) 'de oluşturulan özellik sınıfını okur ve değerleri bir CSV dosyasına yazar ("Veri Yok" (-9999 değeri) ile herhangi bir noktayı atlar).

Giriş dosyasında kalan tüm veri noktaları için 1, 2 ve 3'ü tekrarlar.

İşlem süresi yaklaşık. Veri noktası başına ortalama 1 dakika. İlgili bazı teknik özellikler şunlardır:

  • PC, Windows 7 (64 bit) çalıştıran 8GB RAM ile 2.20GHz'de çalışan dört çekirdekli Intel i7-2720QM CPU'ya sahip.
  • Python sürümü 2.6.6'dır (kabuk ayrıca win32'de "[MSC v, 1500 32 bit (Intel)] 'i belirtir).
  • ArcMap 10.0 (SP4) da yüklü.

Ben farklı bir bilgisayarda (şimdiye kadar çökmeden) çalıştırmayı denedim. Şu anda iş eski bir bilgisayarda başarıyla çalışıyor (ancak daha yavaş) ve çökmeden 419 kayda ulaştı. Bu makine için ilgili özellikler:

  • 4 GB RAM ve 64bit Windows 7 ile 2.93GHz'de çalışan Intel Core 2 DUO E7500 işlemci.
  • Python sürüm 2.5.1 (kabuk da win32'de "[MSC v, 1310 32 bit (Intel)] 'i belirtir).
  • ArcMap 9.3 yüklü (herhangi bir Hizmet Paketinden bahsedilmiyor).

Birisi betiğin neden bir süre çalıştığını ve çökmesinin nasıl çözüleceğini ve nasıl çözüleceğini önerebilir mi?

Betiği işlemek için farklı bir PC'nin (şimdiye kadar) görünmesi "çevresel" bir şey önerir.


Bir güncelleme olarak, ARCGIS 9.3 çalıştıran bilgisayar hala verileri başarıyla işliyor ve işlenmiş 1.300 veri noktasına ulaşıyor (ve hala sayıyor). Bir meslektaş, verileri ARCGIS 10.1 çalıştıran bilgisayarlarında da çalıştırdı - iki ayrı olayda 267 kayıttan sonra çöktü. Kesin olmamasına rağmen, ortak konu Arc 9.3'ün verileri işleyeceği, ancak Arc 10.x'in işlemeyeceği gibi görünüyor.


1
ArcGIS 10.0 şimdi arcpy modülünü kullanıyor (ArcGIS 9.x arcgisscripting modülünü kullanıyor). AGS 10 ortamında çalışmasını istiyorsanız, kodunuzu arcpy'yi çağırmak ve tüm coğrafi işleme araçlarının adlarını ayarlamak için yeniden yapılandırmanız gerekir.
dchaboya

5
Hayır, 9.3'te çalışan eski senaryolar 10 ve 10.1'de çalışmaya devam edecek. Sen yok arcpy için gp değiştirmeniz gerekir. Yeni işlevsellik eklemek, ancak tam olarak dönüştürmek istemiyorsanız, komut dosyası boyunca gp ve arcpy'yi birleştirebilirsiniz. ..... neden bu özel durum yukarıda çöküyor, bilmiyorum. Benim önerim, bölümlere ayırmak ve python
kefaletlerden

KHibma, evet sanırım AGS 10'dan çalışırken kısmen çalışıyormuş gibi geliyor.
dchaboya

Veri noktaları değişti mi? Yol ağına (seyahat süresi) yakın mesafede tesisler kullandığınızı varsayıyorum. Veri noktalarını işlemek için kullanılan algoritmanın, her işlem çalıştırıldığında noktaları tam olarak aynı şekilde yönettiğinin garantisi yoktur. 300 ya da 306 ya da her ne kadar ikna olabilir. NA'yı bir python betiğindeki yollara ve konumlara dayalı bir maliyet analizi için kullandım ve daha küçük bir alt kümeyi denediğinizi merak ediyorum. İş istasyonumda 60 dakikalık seyahat için iş istasyonumda çok daha küçük nokta grupları çalıştırırdım. Seyahat süresi analizi işlem gücünü yok edecektir.
JLP Wisc.

1
Ne yazık ki biz de (aslında sadece bir COM sarıcı ve buggy gibi görünüyor) arcpy GP istikrar sorunları ile karşı karşıya. arcpy aslında python yorumlayıcısını çökertebileceğim tek site paketidir. CLJ, cevaplarda bazı geçici çözümler önerdi (64 Bit GP, bize GA imleçleri vb. Kullanın), ancak ESRI'den bu sorunların hata olduğu konusunda zaten yanıt aldık. Umarım bir sonraki servis paketi bu konuda iyileştirme getirir
Jürgen Zornig

Yanıtlar:


1

Görev yöneticisini çalıştırır ve bellekte python yürütülebilir artışını izler ve ölmeden önce 1 gb'nin üzerine çıkarsanız, 10,1 64 bit coğrafi işlemeye yükseltmekten faydalanabilirsiniz.

Performans için, imleçler kullanıyorsanız, yeni arcpy.da imleçlerinden yararlanabilirsiniz. http://resources.arcgis.com/en/help/main/10.1/index.html#//018w00000008000000

Bir projeyi arcpy.da kullanmak için yükselttim ve 2 büyüklükte bir gelişme oldu.


1

Bu basitçe kavisli bir böcek. Çökmeye neden olan adımları kullanmaktan kaçınmayı deneyebilirsiniz, ancak genellikle uzun bir veri listesiyle işlem yapmak için kullanıldığında farklı araçlar altında gerçekleşir. Bulduğum tek geçici çözüm, betiğimin diske giden yolundaki ilerlemesini kaydetmesini sağlamaktır, böylece işlemi yeniden başlatırsanız, nereden alınacağını bilir. Daha sonra kayıt defterini değiştirerek Windows hata ayıklayıcı iletisini devre dışı bırakırsanız (aşağıya bakın), daha sonra işlemi her seferinde manuel olarak kapatmak zorunda kalmadan tüm toplu işi tamamlayana kadar cmd.exe'de komut dosyasını tekrar tekrar çalıştırabilirsiniz.

Bunun korkunç bir çözüm olduğunu biliyorum, ancak bir python kütüphanesinin python yorumlayıcısını öldürmesi oldukça nadirdir.

DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\DontShowUI = "1"
DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\Disabled = "1"

0

Betiğin imleçleri nasıl ele aldığını kontrol ettiniz mi? Uygulamalarım genellikle bunları açık bir şekilde kapatmayı unuttuğumda del row, cursor, bazen yalnızca bir süre sonra askıda kalıyor .

Bu işe yaramazsa, kodun ve / veya verilerin daha küçük bir bölümünü kullanmanızı öneririm.

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.