python.exe หยุดทำงาน


9

งูหลามเขียนเมื่อประมาณ 18 เดือนก่อนโดยผู้ที่เหลืออยู่ตอนนี้ มันผลิตผลลัพธ์ที่ต้องการแล้ว ฉันถูกขอให้เรียกใช้อีกครั้ง แต่มีอินพุตข้อมูล (ความละเอียดปลีกย่อย) ที่แตกต่างกัน ชุดข้อมูลอินพุตถูกแบ่งออกเป็นชุดย่อย 20 ชุดโดยมีจุดข้อมูลประมาณ 2,700 จุดต่อชุด อย่างไรก็ตามสคริปต์ขัดข้อง ("python.exe หยุดทำงาน") หลังจากประมวลผลข้อมูลประมาณ 300 จุด (ช่วง 295 ถึง 306 และไม่ได้ล้มเหลวเสมอในระเบียนเดียวกัน)

ในฐานะที่เป็นเก่า (ish) สคริปต์ถูกเขียนโดยใช้ arcgisscripting และไม่ใช่ arcpy ในวงกว้างจะทำสิ่งต่อไปนี้โดยใช้เคอร์เซอร์:

  1. สำหรับจุดที่กำหนดคำนวณระยะทางต้นทุน (ใช้ gp.CostDistance_sa) ด้วยเวลาเดินทาง 60 นาที
  2. เรียก gp.ExtractValuesToPoints_sa เพื่อแยกค่าแต่ละค่าทั้งหมดที่แต่ละจุดข้อมูลและส่งออกคลาสคุณลักษณะไปยังฐานข้อมูลไฟล์ทางภูมิศาสตร์
  3. อ่านคลาสคุณลักษณะที่สร้างใน b) ด้านบนและเขียนค่าลงในไฟล์ CSV (ไม่ต้องใส่จุดใด ๆ ด้วย "ไม่มีข้อมูล" (ค่า -9999))

ทำซ้ำ 1, 2 และ 3 สำหรับจุดข้อมูลที่เหลือทั้งหมดในไฟล์อินพุต

เวลาในการประมวลผลประมาณ 1 นาทีต่อจุดข้อมูลโดยเฉลี่ย นี่คือข้อกำหนดทางเทคนิคที่เกี่ยวข้อง:

  • พีซีมีซีพียู quad-core Intel i7-2720QM ที่ความเร็ว 2.20GHz พร้อม 8GB RAM ที่ใช้ Windows 7 (64 บิต)
  • Python เวอร์ชั่น 2.6.6 (shell ยังระบุว่า "[MSC v, 1500 32 บิต (Intel)] บน win32)
  • ติดตั้ง ArcMap 10.0 (SP4) ด้วย

ฉันพยายามเรียกใช้บนพีซีเครื่องอื่น (จนถึงตอนนี้โดยไม่ล้มเหลว) ขณะนี้งานกำลังทำงานสำเร็จ (แต่ช้ากว่า) ในพีซีรุ่นเก่าและมีจำนวนถึง 419 บันทึกโดยที่ไม่หยุดทำงาน ข้อกำหนดที่เกี่ยวข้องสำหรับเครื่องนี้คือ:

  • โปรเซสเซอร์ Intel Core 2 DUO E7500 ทำงานที่ 2.93GHz พร้อม 4 GB RAM และ 64 บิต Windows 7
  • Python เวอร์ชั่น 2.5.1 (เชลล์ระบุด้วย "[MSC v, 1310 32 บิต (Intel)] บน win32)
  • ติดตั้ง ArcMap 9.3 (ไม่เอ่ยถึง Service Packs ใด ๆ )

บางคนสามารถให้คำแนะนำเกี่ยวกับสาเหตุที่สคริปต์ดูเหมือนจะทำงานชั่วขณะหนึ่งแล้วเกิดข้อผิดพลาดและวิธีการแก้ไขได้อย่างไร

ข้อเท็จจริงที่ว่าพีซีเครื่องอื่นปรากฏขึ้น (จนถึงตอนนี้) เพื่อจัดการสคริปต์จะแนะนำสิ่งที่ "เป็นมิตรกับสิ่งแวดล้อม"


เป็นการอัปเดตพีซีที่ใช้ ARCGIS 9.3 ยังคงประมวลผลข้อมูลได้สำเร็จและมีการประมวลผลข้อมูลถึง 1,300 จุด (และยังคงมีการนับ) เพื่อนร่วมงานยังเรียกใช้ข้อมูลบนพีซีของตนที่ใช้ ARCGIS 10.1 - เกิดข้อผิดพลาดหลังจากมีการบันทึก 267 ครั้งในสองครั้งที่แยกกัน แม้ว่าจะไม่ได้ข้อสรุปเธรดทั่วไปดูเหมือนว่า Arc 9.3 จะประมวลผลข้อมูล แต่ Arc 10.x จะไม่ทำงาน


1
ขณะนี้ ArcGIS 10.0 ใช้โมดูล arcpy (ArcGIS 9.x ใช้โมดูล arcgisscripting) คุณจะต้องกำหนดค่ารหัสของคุณใหม่เพื่อเรียกใช้อาร์คปีรวมถึงปรับชื่อเครื่องมือประมวลผลทางภูมิศาสตร์ใด ๆ หากคุณต้องการให้มันทำงานในสภาพแวดล้อม AGS 10
dchaboya

5
ไม่ครับสคริปต์ที่ไม่ถูกต้องที่ทำงานใน 9.3 จะยังคงทำงานต่อใน 10 และ 10.1 คุณไม่จำเป็นต้องแก้ไข gp เป็น arcpy คุณสามารถ intermingle gp และ arcpy ได้ตลอดสคริปต์หากคุณต้องการเพิ่มฟังก์ชั่นใหม่ แต่ไม่สามารถแปลงได้อย่างสมบูรณ์ ..... เหตุใดกรณีนี้จึงล้มเหลวฉันไม่ทราบ ข้อเสนอแนะของฉันคือการทำลายมันลงไปยังส่วนและเห็นว่าเครื่องมือสุดท้าย / ฟังก์ชั่นจะเกิดขึ้นก่อน Bails หลาม
KHibma

KHibma, ใช่ฉัน guesse ที่ทำให้รู้สึกราวกับมันเป็นบางส่วนทำงานเมื่อวิ่งออกมาจาก AGS 10
dchaboya

จุดข้อมูลเปลี่ยนไปหรือไม่? ฉันคิดว่าคุณกำลังใช้สิ่งอำนวยความสะดวกในระยะทางใกล้เคียงกับเครือข่ายถนน (เวลาเดินทาง) ไม่มีการรับประกันว่าอัลกอริทึมสำหรับการประมวลผลจุดข้อมูลจะจัดการกับจุดเดียวกันทุกครั้งที่มีการเรียกใช้กระบวนการ 300 หรือ 306 หรืออะไรก็ตามที่เป็นเรื่องบังเอิญ ฉันใช้ NA ในการวิเคราะห์ต้นทุนของเครือข่ายตามถนนและสถานที่ในสคริปต์ไพ ธ อนและฉันสงสัยว่าคุณได้ลองชุดย่อยขนาดเล็กลงหรือไม่ ฉันจะใช้จุดเล็ก ๆ บนเวิร์กสเตชันของฉันเป็นเวลา 60 นาทีเพื่อเดินทางบนเวิร์กสเตชัน การวิเคราะห์เวลาเดินทางจะทำลายพลังการประมวลผล
JLP Wisc.

1
น่าเสียดายที่เรากำลังเผชิญกับปัญหาความมั่นคงของ arcpy GP (ซึ่งอันที่จริงเป็นเพียง wrapper COM และดูเหมือนว่าเป็นรถบั๊กกี้) arcpy เป็นแพ็คเกจเว็บไซต์เดียวที่ฉันรู้ซึ่งจริง ๆ แล้วสามารถแปลความหมายหลามได้ CLJ แนะนำวิธีแก้ไขปัญหาบางอย่างที่นี่ในคำตอบ (ใช้ 64 Bit GP, เคอร์เซอร์ GA ของเรา, ฯลฯ ... ) แต่เราได้รับการตอบกลับจาก ESRI ว่าปัญหาเหล่านี้เป็นข้อบกพร่อง หวังว่าเซอร์วิสแพ็คถัดไปจะช่วยปรับปรุงเรื่องนี้
Jürgen Zornig

คำตอบ:


1

หากคุณเรียกใช้ตัวจัดการงานและดูการเพิ่มหน่วยความจำของหน่วยประมวลผลหลามและไปมากกว่า 1 gb ก่อนที่มันจะตายคุณอาจได้รับประโยชน์จากการอัพเกรดเป็นระบบประมวลผลทางภูมิศาสตร์ 10.1 64 บิต

เพื่อประสิทธิภาพหากคุณใช้เคอร์เซอร์คุณอาจได้รับประโยชน์จากเคอร์เซอร์ arcpy.da ใหม่ http://resources.arcgis.com/en/help/main/10.1/index.html#//018w00000008000000

ฉันอัพเกรดโครงการเพื่อใช้ arcpy.da และเป็นการปรับปรุงขนาด 2 ครั้ง


1

นี่เป็นเพียงข้อผิดพลาด arcpy คุณสามารถพยายามหลีกเลี่ยงการใช้ขั้นตอนที่ทำให้เกิดความผิดพลาด แต่โดยทั่วไปจะเกิดขึ้นภายใต้เครื่องมือต่าง ๆ เมื่อใช้ในการประมวลผลผ่านรายการข้อมูลแบบยาว วิธีแก้ปัญหาเดียวที่ฉันพบคือการทำให้สคริปต์ของฉันบันทึกความคืบหน้าของมันไปพร้อมกับดิสก์ดังนั้นหากคุณเริ่มกระบวนการใหม่มันจะรู้ว่าจะรับจากที่ใด หากคุณปิดการใช้งานข้อความดีบักเกอร์ของ windows โดยการแก้ไขรีจิสทรี (ดูด้านล่าง) คุณสามารถเรียกใช้สคริปต์ซ้ำ ๆ ใน cmd.exe จนกว่าจะเสร็จสิ้นแบตช์ทั้งหมดโดยไม่ต้องปิดกระบวนการด้วยตนเองทุกครั้งในระหว่างนั้น

ฉันรู้ว่านี่เป็นวิธีแก้ปัญหาที่น่ากลัว แต่ก็ค่อนข้างแปลกที่มีห้องสมุดหลามที่ฆ่าตัวแปลของหลาม

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

คุณตรวจสอบว่าสคริปต์จัดการเคอร์เซอร์ได้อย่างไร แอปพลิเคชันของฉันมักจะหยุดทำงานเมื่อฉันลืมปิดโดยใช้del row, cursorบางครั้งหลังจากผ่านไประยะหนึ่ง

หากวิธีนี้ไม่ได้ผลฉันขอแนะนำให้ใช้ส่วนน้อยของรหัสและ / หรือข้อมูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.