Activer le traitement multithread dans QGIS?

11

J'ai trouvé plusieurs liens qui semblent dire que cela existe maintenant dans QGIS 2.2, mais il semble qu'il n'utilise qu'un seul cœur à pleine capacité.

Cela fonctionne sur Ubuntu 14.04

Le processus actuel crée une grande quantité de points réguliers. Comment puis-je faire en sorte que ce processus utilise plus qu'un seul cœur?

L'utilisation du processeur

jpmaniac87
la source
1
Je pense que ce sera en 2.4, la prochaine version. Cependant, si vous voulez l'essayer, téléchargez la version nocturne.
Matt
Il est probablement intéressant de noter qu'en raison du GIL, le "multithreading" ne fonctionnera pas avec des cœurs simultanés. Consultez stackoverflow.com/questions/1294382/… Ce que vous voulez, c'est du "multiprocessing".
Mr Purple

Réponses:

6

Il n'y a pas de rendu multithread QGIS 2.2, c'est une fonctionnalité qui sera disponible dans QGIS 2.4.

Vous pouvez essayer QGIS Master (tous les soirs) pour les tests, puis QGIS 2.4 devrait sortir le 20 juin 2014 .


Oups, avez mal lu votre question et d'après les commentaires, il semble que le traitement multithread soit quelque chose qui se passe au niveau du développeur QGIS ou au niveau du contributeur du plugin Python.

S'il existe un outil QGIS spécifique que vous utilisez dans les menus intégrés à QGIS, pour obtenir un traitement multithread, il devra probablement être codé par un développeur pour QGIS ou même à la racine de l'outil (GDAL, SAGA, Orfeo, GRASS, développeurs R, etc ...).

S'il existe un certain plugin, il est probablement codé autour de Python et le contributeur ou le responsable de ce plugin pourrait voir s'il est possible d'inclure les modules multiprocessingou threadingpour améliorer ses performances.

Quoi qu'il en soit, soumettre une demande de fonctionnalité ou voir s'il en existe déjà est généralement la meilleure façon de commencer. Il vous permettrait de savoir si quelqu'un s'attaque déjà à l'amélioration ou quelles ressources seraient nécessaires pour la démarrer.

SaultDon
la source
C'est dommage ... J'ai eu des problèmes de construction à partir de la source dans le passé. Si j'ajoute juste le ppa pour les nightlies et l'installe tout de même avec apt, cela me donnerait-il la dernière soirée? Une idée sur la stabilité?
jpmaniac87
@ jpmaniac87 Je n'ai pas utilisé Ubuntu depuis longtemps et je fais mon travail SIG sur Arch Linux donc je compile tout depuis la source. Je ne saurais donc pas comment sont les PPA pour Ubuntu et si vous pouviez installer QGIS (stable) avec QGIS (maître) en même temps.
SaultDon
@ jpmaniac87 Il ressort de cette réponse dans une autre question que cela pourrait ne pas être possible compte tenu de la façon dont les versions de QGIS sont empaquetées sur Ubuntu. On dirait que c'est l'un ou l'autre.
SaultDon
Les AAE fonctionnent. J'ai juste commenté les lignes stables et installé le soir. C'est rapide! Mais ... il n'utilise que les multiples threads littéralement pour le rendu ... J'espérais plus de processus de plugin. Je suppose que cela signifierait que les créateurs de plugins devraient autoriser le traitement multithread dans leur code?
jpmaniac87
1
@ jpmaniac87 Oui, car les plugins sont construits avec Python, et il y a un module multiprocessingou threading ( threadingest généralement utilisé avec queue) pour Python qu'ils devraient ajouter spécifiquement à leurs scripts.
SaultDon
3

Cela dépend de ce que vous recherchez. Lorsque le traitement est porté vers le nouveau cadre du gestionnaire de tâches, les algorithmes pourront s'exécuter en parallèle (si possible). Par exemple, un tampon pour une couche peut s'exécuter pendant qu'une transformation se produit sur une autre couche. Si vous recherchez la parallélisation dans un seul algorithme (par exemple, la mise en mémoire tampon de fonctionnalités utilisant plusieurs threads), je ne connais aucun plan en place pour gérer cela.

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


Ancienne réponse: lors du Google Summer of Code 2015, la prise en charge du multithread a été développée pour le traitement QGIS. Le code est actuellement en cours de révision et devrait atterrir dans la version développeur en 2016. (Source: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... Cette solution n'a malheureusement pas pu être fusionnée.

obscur
la source
Une mise à jour sur ce sujet @underdark?
Ricardo Barros Lourenço
La parallélisation est encore limitée dans la plupart des applications, malheureusement. Ma compréhension est que l'utilisation d'une infrastructure de base de données, telle que PostGIS / postgres, permet une gestion plus intégrée des requêtes et possède de meilleures capacités de multithreading.
CrystallineEntity
2

Certains threads sont en cours d'intégration dans la fonctionnalité de base de QGIS (rendu par exemple comme décrit dans la réponse SaultDons) mais de nombreuses fonctions ou algorithmes peuvent ou non avoir des threads incorporés en fonction de leur développement.

Pour les auteurs de plugins pyQGIS (y compris peut-être OP) souhaitant inclure le threading dans leur plugin / script, une aide est disponible sur le blog de snorfalorpagus .

En guise d'intervalle, vous pouvez peut-être créer un script pour votre processus et utiliser un schéma de processus parallèle pauvre avec des appels à des scripts shell asychrones comme décrit dans la réponse d'Alexis ici

Si quelqu'un d'autre a de bonnes ressources pour paralléliser les travaux QGIS, n'hésitez pas à les modifier et à les ajouter à cette réponse :)

Mr Purple
la source