Werden Kernfunktionen in QGIS Multithreading nutzen?

10

Nach dem Lesen Aktivieren der Multithread-Verarbeitung in QGIS? Ich habe mich gefragt, ob QGIS 2.6 dies beim Ausführen verschiedener Prozesse berücksichtigt. Ich habe online nachgesehen und konnte nur feststellen, dass in QGIS 2.4 Multithread-Rendering eingeführt wurde (ich gehe davon aus, dass es in 2.6 wieder verfügbar sein wird). Jetzt können Karten sehr schnell neu gezeichnet werden, insbesondere bei großen Datenmengen.

Ich habe gelesen, dass es ziemlich schwierig ist, Multithreading in die Kernfunktionalität aufzunehmen, und dass Benutzern empfohlen wird, Python-Code zu manipulieren, um dies zu erreichen, z. B. beim Parallelisieren von GIS-Vorgängen in PyQGIS? .

Ich habe auch die Feature-Anfrage überprüft, aber sie wurde seit 9 Monaten von Tim Sutton geschlossen. Der letzte Kommentar lautet:

"Ich schließe dies ab - Martin Dobias hat eine Implementierung in einer Niederlassung, die nach QGIS 2.2 zusammengeführt wird."

Werden einige Funktionen in QGIS 2.6 Multithreading nutzen (oder wird es sich wieder auf das Rendern konzentrieren) und wenn nicht, wird sich dies bei QGIS 3.0 ändern?

Joseph
quelle
Multithreading eignet sich nicht besonders für die meisten GIS-Aufgaben, die in der Regel streamorientiert, einfach und E / A-gebunden sind. Die Schwierigkeit, Ergebnisse zusammenzuführen, ist normalerweise nicht die Mühe wert, sie unabhängig voneinander in die Warteschlange zu stellen (und die einfache Aufgabe sofort zu erledigen). Die Definition von "Exploit" ist daher Gegenstand erheblicher Debatten.
Vince
@Vince - Danke, ich verstehe, dass Multithreading für viele Anwendungsfälle keine oberste Priorität hat. Da jedoch bereits einige Arbeiten durchgeführt wurden, um dies zu erreichen, habe ich mich gefragt, ob die neue QGIS-Version Unterstützung dafür bieten könnte (was ein besserer Begriff als "Exploit" sein könnte) =
Joseph
1
@PolyGeo - Danke, ein fairer Punkt, der für dieses Q / A-Format durchaus geeignet ist. Ich stimme zu :)
Joseph

Antworten:

3

Ich denke, dass die Antwort für QGIS 3.0 in diesem kürzlich in Nabble veröffentlichten Gespräch zu finden ist :

Unterstützt die Verarbeitung in QGIS 3 die Parallelisierung?

Unter Berufung auf Nyall Dawson:

Wenn Sie nach einer Parallelisierung innerhalb eines einzelnen Algorithmus suchen (z. B. Pufferfunktionen mit mehreren Threads), sind mir keine Pläne bekannt, dies zu tun.

mgri
quelle
Schöner Fund! Obwohl ich ein wenig verwirrt bin mit dem Zitat, das dem folgt, was Sie zitiert haben: "Schöne und (theoretisch) einfache Möglichkeit, Multithread-Algorithmen zu erhalten, und es wäre einfach, viele vorhandene Algorithmen daran anzupassen (Puffer, Schwerpunkt, Transformation, Übersetzung, .... Grundsätzlich alles, was für jedes Feature isoliert funktioniert. " . Nach meinem Verständnis arbeiten die meisten Algorithmen ohnehin mit jedem Feature einzeln, denn wenn Sie einzelne Features nicht manuell auswählen, verarbeitet der Algorithmus automatisch alle?
Joseph
Ich denke, dass das von Ihnen zitierte Zitat die Möglichkeit betrifft, eine Bearbeitung direkt auf der Ebene vorzunehmen (anstatt eine neue Ausgabe zu erzeugen): Tatsächlich spricht er im Folgenden über die Möglichkeit, eine Pufferoperation direkt auf der aktuellen Ebene durchzuführen. ohne die weitere Verarbeitung der zurückgegebenen Ausgabe.
Mgri
1
Hmm guter Punkt. Ich hoffe, ein QGIS-Entwickler könnte dies auch kommentieren und bestätigen :)
Joseph
2
GIS SE ist keine Diskussionsseite. Wenn Sie eine Antwort von einem bestimmten Anbieter wünschen, empfehlen wir Ihnen, diese direkt abzufragen.
Vince
1
@joseph Es gibt viele Algorithmen (z. B. Berechnen von Linienschnittpunkten oder Auflösen von Merkmalen), bei denen einzelne Merkmale nicht bearbeitet werden können.
Underdark
4

Nur zum aktuellen Zeitpunkt rendern (QGIS 2.6).

Martin und ich haben über eine Art generische Thread-Prozess-API gesprochen, aber es handelt sich derzeit nur um Gespräche.

Nathan W.
quelle
1
Danke Nathan, denkst du persönlich, dass es sich lohnt, dieses Unternehmen zu verfolgen, oder wird das Hinzufügen / Verbessern von Funktionen als höhere Priorität angesehen? Dies ist nur aus Neugier :)
Joseph
Es lohnt sich zu verfolgen, aber ich vermute nicht, dass es eine leichte Aufgabe ist.
Nathan W