1
เธรด OGR / GDAL ส่งผลให้มีการใช้งาน core ต่ำ
ฉันพยายามประมวลผลข้อมูลแรสเตอร์โดยใช้ ogr / gdal และฉันไม่สามารถใช้ประโยชน์จากคอร์ทั้งหมดในเครื่องได้ เมื่อฉันเรียกใช้กระบวนการบนแกนเดียวฉันได้รับประโยชน์ 100% ของแกนนั้น เมื่อฉันพยายามที่จะแบ่งออกเป็นมัลติคอร์ (ในตัวอย่างด้านล่างโดย chunking x ชดเชยและวางไว้ในคิว) ฉันได้รับการใช้ประโยชน์ที่น่าสงสารในแต่ละ 8 แกนของฉัน ดูเหมือนว่าจะเพิ่มการใช้ประโยชน์ได้สูงสุด 100% ในแต่ละคอร์ (เช่น 12.5% สำหรับแต่ละคอร์) ฉันกังวลว่าการใช้แหล่งข้อมูลเดียวกันคือคอขวด แต่ฉันก็ทำซ้ำไฟล์แรสเตอร์ต้นแบบสำหรับแต่ละคอร์ ... และการใช้งานคอร์ยังคงอึอยู่ สิ่งนี้ทำให้ฉันเชื่อว่า ogr หรือ gdal ทำตัวเหมือนทรัพยากรที่ใช้ร่วมกันในคอขวด แต่ฉันไม่พบสิ่งใดทางออนไลน์เกี่ยวกับเรื่องนั้น ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก! นี่คือฟังก์ชัน "ผู้ช่วยเหลือ" ที่ทำงานภายในแต่ละเธรดผู้ทำงาน: def find_pixels_intersect_helper(datasource, bounds_wkt, x_min, x_max): bounds = ogr.CreateGeometryFromWkt(bounds_wkt) rows_to_write = [] for …