Threading dans une application PyQt : utiliser des threads Qt ou des threads Python ?

| | | | | | | | | | | | | | | | | | | |

J'écris une application graphique qui récupère régulièrement des données via une connexion Web. Étant donné que cette récupération prend un certain temps, l'interface utilisateur ne répond pas pendant le processus de récupération (elle ne peut pas être divisée en parties plus petites). C'est pourquoi Je souhaite externaliser la connexion Web vers un thread de travail distinct.

[Oui, je sais, maintenant j'ai deux problèmes.]

Quoi qu'il en soit, l'application utilise PyQt4, donc j'aimerais savoir ce qui est le mieux choix est : utiliser les threads de Qt ou utiliser le module Python threading ? Quels sont les avantages/inconvénients de chacun ? Ou avez-vous une suggestion totalement différente ?

Edit (re bounty) : Alors que la solution dans mon cas particulier utilisera probablement une requête réseau non bloquante comme Jeff Ober et Luk√°≈° Lalinsk√Ω suggéré (donc en laissant essentiellement les problèmes de concurrence à l'implémentation du réseau), j'aimerais toujours une réponse plus approfondie à la question générale :

Quels sont les avantages et les inconvénients de l'utilisation de PyQt4" s (c'est-à-dire Qt"s) sur des threads Python natifs (du module threading) ?


Edit 2 : Merci à tous pour vous Bien qu'il n'y ait pas d'accord à 100 %, il semble y avoir un large consensus sur le fait que la réponse est "utiliser Qt", puisque l'avantage de cela est l'intégration avec le reste de la bibliothèque, sans causer de réels inconvénients.

Pour ceux qui cherchent à choisir entre les deux implémentations de threading, je leur recommande fortement de lire toutes les réponses fournies ici, y compris le fil de la liste de diffusion PyQt cet abbé liens vers.

Il y avait plusieurs réponses que j'ai envisagées pour la prime ; au final, j'ai choisi abbot pour la référence externe très pertinente ; c'était cependant un appel proche.

Merci encore.