เปิดใช้งานการประมวลผลแบบมัลติเธรดใน QGIS หรือไม่


11

ฉันพบลิงก์หลายรายการที่ดูเหมือนจะบอกว่าตอนนี้มีอยู่ใน QGIS 2.2 แต่ดูเหมือนว่าจะใช้เพียงหนึ่งคอร์เท่านั้นเพื่อให้เต็มประสิทธิภาพ

สิ่งนี้ทำงานบน Ubuntu 14.04

กระบวนการปัจจุบันกำลังสร้างคะแนนปกติจำนวนมาก ฉันจะทำให้กระบวนการนั้นใช้มากกว่าหนึ่งแกนได้อย่างไร

CPU USage


1
ฉันคิดว่านี่จะเป็น 2.4 รุ่นถัดไป อย่างไรก็ตามหากคุณต้องการลองดาวน์โหลดรุ่นต่อคืน
Matt

อาจเป็นเรื่องที่ควรพิจารณาว่าเนื่องจาก "มัลติเธรด" ของ GIL จะไม่เรียกใช้คอร์ที่ทำงานพร้อมกัน ลองดูstackoverflow.com/questions/1294382/…สิ่งที่คุณต้องการคือ "มัลติโปรเซสเซอร์"
Mr Purple

คำตอบ:


6

ไม่มีการเรนเดอร์แบบมัลติเธรด QGIS 2.2 มันเป็นคุณสมบัติที่จะมีใน QGIS 2.4

คุณสามารถลอง QGIS โท (คืน) สำหรับการทดสอบแล้วQGIS 2.4 กำหนดให้เป็นอิสระใน 20 มิถุนายน 2014


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

หากมีเครื่องมือ QGIS เฉพาะที่คุณใช้จากเมนูที่สร้างไว้ใน QGIS แทนที่จะทำการประมวลผลแบบมัลติเธรดมันอาจจะต้องมีรหัสจากผู้พัฒนาสำหรับ QGIS หรือแม้กระทั่งรากของเครื่องมือ (GDAL, SAGA, Orfeo, GRASS นักพัฒนา R และอื่น ๆ ... )

หากมีปลั๊กอินบางอย่างมากกว่าที่มีการเข้ารหัสไว้มากที่สุดใน Python และผู้สนับสนุนหรือผู้ดูแลของปลั๊กอินนั้นสามารถดูว่าเป็นไปได้หรือไม่ที่จะรวมmultiprocessingหรือthreadingโมดูลเพื่อปรับปรุงประสิทธิภาพ

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


น่าเสียดาย ... ฉันมีปัญหาในการสร้างแหล่งที่มาในอดีต ถ้าฉันเพิ่งเพิ่ม ppa สำหรับ nightlies และติดตั้งทั้งหมดด้วย apt นั่นจะให้คืนล่าสุดกับฉันหรือไม่ มีความคิดเรื่องเสถียรภาพไหม?
jpmaniac87

@ jpmaniac87 ฉันไม่ได้ใช้ Ubuntu เป็นเวลานานและทำงาน GIS บน Arch Linux ดังนั้นฉันจึงรวบรวมทุกอย่างจากแหล่งที่มา ดังนั้นฉันจะไม่ทราบว่า PPA สำหรับ Ubuntu เป็นอย่างไรและถ้าคุณสามารถติดตั้ง QGIS (เสถียร) ด้วย QGIS (หลัก) ในเวลาเดียวกัน
SaultDon

@ jpmaniac87 ดูเหมือนว่าจากคำตอบนี้ในคำถามอื่นที่อาจไม่สามารถระบุได้ว่าบรรจุในเวอร์ชั่น QGIS บน Ubuntu อย่างไร ดูเหมือนว่าเป็นหนึ่งหรืออื่น ๆ
SaultDon

สัญญาซื้อขายไฟฟ้าทำงาน ฉันเพิ่งแสดงความคิดเห็นในบรรทัดที่มั่นคงและติดตั้งทุกคืน มันเร็วมาก! แต่ ... มันใช้หลาย ๆ เธรดเท่านั้นสำหรับการเรนเดอร์ ... ฉันหวังว่าจะมีกระบวนการปลั๊กอินมากขึ้น ฉันเดาว่าจะหมายความว่าผู้สร้างปลั๊กอินจะต้องอนุญาตให้มีการประมวลผลแบบมัลติเธรดในรหัสของพวกเขา?
jpmaniac87

1
@ jpmaniac87 ใช่แล้วเพราะปลั๊กอินสร้างขึ้นด้วย Python และมีโมดูลmultiprocessingหรือthreading ( threadingมักใช้กับqueue)สำหรับ Python ที่พวกเขาจะต้องเพิ่มลงในสคริปต์ของพวกเขาโดยเฉพาะ
SaultDon

3

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

ที่มา: http://osgeo-org.1560.x6.nabble.com/Will-Processing-in-QGIS-3-support-parallelization-td5301809.html


คำตอบเก่า: ในช่วงปี 2015 Google Summer of Code การสนับสนุนหลายเธรดได้รับการพัฒนาสำหรับการประมวลผล QGIS ขณะนี้รหัสกำลังอยู่ในระหว่างการตรวจสอบและคาดว่าจะได้รับในเวอร์ชันนักพัฒนาซอฟต์แวร์ในปี 2559 (ที่มา: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... วิธีนี้น่าเสียดายที่ไม่สามารถผสานได้


มีการปรับปรุงใด ๆ เกี่ยวกับ @underdark นี้หรือไม่?
Ricardo Barros Lourenço

การขนานกันยังคงมีข้อ จำกัด ในแอปพลิเคชั่นส่วนใหญ่โดยไม่สบาย ความเข้าใจของฉันคือการใช้โครงสร้างพื้นฐานของฐานข้อมูลเช่น PostGIS / postgres ช่วยให้สามารถจัดการคิวรีแบบรวมได้มากขึ้นและมีความสามารถในการมัลติเธรดที่ดีขึ้น
CrystallineEntity

2

การทำเกลียวบางส่วนถูกรวมอยู่ในฟังก์ชั่นหลักของ QGIS (การเรนเดอร์ตัวอย่างตามที่อธิบายไว้ในคำตอบของ SaultDons) แต่ฟังก์ชั่นหรืออัลกอริธึมจำนวนมากอาจจะใช่หรือไม่ก็ได้

สำหรับผู้เขียนปลั๊กอิน pyQGIS (อาจรวมถึง OP) ที่ต้องการรวมเธรดในปลั๊กอิน / สคริปต์ความช่วยเหลือบางอย่างมีอยู่ในบล็อกของ snorfalorpagusหวังว่าผู้พัฒนาซอฟต์แวร์จำนวนมากจะใช้เธรด - โดยเฉพาะอย่างยิ่งสำหรับการคิดภาษี

ในฐานะที่เป็น stopgap คุณอาจจะสามารถสคริปต์กระบวนการของคุณและใช้รูปแบบกระบวนการที่ไม่ดีชาย - คู่กับการเรียกไปยังสคริปต์เชลล์ asychronous ตามที่อธิบายไว้ในคำตอบของ alexis ที่นี่

หากใครมีทรัพยากรที่ดีสำหรับการขนานงาน QGIS โปรดแก้ไขและเพิ่มลงในคำตอบนี้ :)

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