Abilitare l'elaborazione multithread in QGIS?


11

Ho trovato più collegamenti che sembrano dire che questo esiste ora in QGIS 2.2, ma sembra che stia usando solo un core a piena capacità.

Questo è in esecuzione su Ubuntu 14.04

Il processo attuale sta creando una grande quantità di punti regolari. Come posso fare in modo che quel processo usi più di un core?

Uso della CPU


1
Penso che questo sarà in 2.4, la prossima versione. Tuttavia, se vuoi provarlo, scarica la build notturna.
Matt

Vale probabilmente la pena di commentare che a causa del "multithreading" di GIL non verranno eseguiti core simultanei. Dai un'occhiata a stackoverflow.com/questions/1294382/… Quello che vuoi è "multiprocessing".
Mr Purple,

Risposte:


6

Non esiste il rendering multithreading QGIS 2.2, è una funzionalità che sarà disponibile in QGIS 2.4.

Puoi provare QGIS Master (di notte) per i test, quindi QGIS 2.4 è programmato per il rilascio il 20 giugno 2014 .


Spiacenti, hai letto male la tua domanda e dai commenti, sembra che l'elaborazione multithread sia qualcosa che accade sia a livello di sviluppatore di QGIS sia a livello di contributore del plugin Python.

Se esiste uno strumento QGIS specifico che stai utilizzando dai menu integrato in QGIS che per ottenere l'elaborazione multithread, probabilmente dovrebbe essere codificato da uno sviluppatore per QGIS o addirittura alla radice dello strumento (GDAL, SAGA, Orfeo, GRASS, sviluppatori R, ecc ...).

Se esiste un determinato plug-in di quello che è probabilmente codificato attorno a Python e il collaboratore o il manutentore di quel plug-in potrebbe vedere se è possibile includere i moduli multiprocessingo threadingper migliorarne le prestazioni.

Ad ogni modo, l'invio di una richiesta di funzionalità o vedere se ne esiste già una è di solito il modo migliore per iniziare. Ti farebbe sapere se qualcuno sta già affrontando il miglioramento o quali risorse sarebbero necessarie per avviarlo.


È un peccato ... Ho avuto problemi a costruire dalla fonte in passato. Se aggiungessi semplicemente il ppa per i nightly e lo installassi lo stesso con apt, mi darebbe l'ultimo nightly? Qualche idea sulla stabilità?
jpmaniac87

@ jpmaniac87 Non uso Ubuntu da molto tempo e lavoro GIS su Arch Linux, quindi compilo tutto dal sorgente. Quindi non saprei come sono i PPA per Ubuntu e se potessi installare QGIS (stabile) con QGIS (master) allo stesso tempo.
Sault,

@ jpmaniac87 Da questa risposta appare un'altra domanda che potrebbe non essere possibile dato il modo in cui le versioni di QGIS sono impacchettate su Ubuntu. Sembra che sia l'uno o l'altro.
Sault,

I PPA funzionano. Ho appena commentato le linee stabili e installato quella notturna. È veloce! Ma ... usa letteralmente solo i thread multipli per il rendering ... Speravo di più sui processi di plugin. Immagino che ciò significherebbe che i creatori di plugin dovrebbero consentire l'elaborazione multithread nel loro codice?
jpmaniac87,

1
@ jpmaniac87 Sì, perché i plugin sono creati con Python e esiste un modulo multiprocessingo threading (di threadingsolito viene usato con queue) per Python che dovrebbero aggiungere ai loro script in modo specifico.
SaultDon

3

Dipende da cosa stai cercando. Quando l'elaborazione viene trasferita nel nuovo framework del task manager, gli algoritmi saranno in grado di funzionare in parallelo (ove possibile). Ad esempio, un buffer per un livello può essere eseguito mentre si verifica una trasformazione su un altro livello. Se stai cercando la parallelizzazione all'interno di un singolo algoritmo (ad esempio funzionalità di buffering che utilizzano più thread), non sono a conoscenza di alcun piano in atto per gestirlo.

Fonte: http://osgeo-org.1560.x6.nabble.com/Will-Processing-in-QGIS-3-support-parallelization-td5301809.html


Vecchia risposta: durante Google Summer of Code 2015, è stato sviluppato il supporto multi-threading per l'elaborazione QGIS. Il codice è attualmente in fase di revisione e dovrebbe arrivare nella versione per sviluppatori nel 2016. (Fonte: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... Purtroppo questa soluzione non può essere unita.


Qualche aggiornamento su questo argomento @underdark?
Ricardo Barros Lourenço,

La parallelizzazione è ancora limitata nella maggior parte delle applicazioni, sfortunatamente. La mia comprensione è che l'utilizzo dell'infrastruttura di database, come PostGIS / Postgres, consente una gestione più integrata delle query e migliori capacità di multithreading.
CrystallineEntity,

2

Alcuni thread vengono incorporati nella funzionalità principale di QGIS (rendering, ad esempio, come descritto nella risposta di SaultDons), ma molte funzioni o algoritmi possono o meno avere il threading incorporato a seconda del loro sviluppo.

Per quegli autori di plugin pyQGIS (forse incluso OP) che desiderano includere il threading nel loro plug-in / script, un aiuto è disponibile nel blog di snorfalorpagus .

Come stopgap potresti essere in grado di eseguire lo scripting del tuo processo e utilizzare uno schema di processo parallelo mansueto con chiamate a script shell asincroni come descritto nella risposta alexis qui

Se qualcun altro ha buone risorse per parallelizzare i lavori QGIS, non esitare a modificarli e aggiungerli a questa risposta :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.