J'écris une application GUI 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 j'aimerais 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, alors j'aimerais savoir quel est le meilleur choix: utiliser les threads de Qt ou utiliser le threading
module Python ? Quels sont les avantages / inconvénients de chacun? Ou avez-vous une suggestion totalement différente?
Edit (re bounty): Bien que la solution dans mon cas particulier utilisera probablement une demande de réseau non bloquante comme l' ont suggéré Jeff Ober et Lukáš Lalinský (donc en gros, en laissant les problèmes de concurrence à la mise en œuvre du réseau), j'aimerais toujours plus réponse approfondie à la question générale:
Quels sont les avantages et les inconvénients de l'utilisation des threads de PyQt4 (c'est-à-dire de Qt) par rapport aux threads Python natifs (à partir du threading
module)?
Edit 2: Merci à tous pour vos réponses. 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 tous ceux qui cherchent à choisir entre les deux implémentations de threads, je leur recommande vivement de lire toutes les réponses fournies ici, y compris le fil de discussion de la liste de diffusion PyQt vers lequel abbot est lié.
Il y avait plusieurs réponses que j'ai envisagées pour la prime; à la fin j'ai choisi l'abbé comme référence externe très pertinente; c'était, cependant, un appel serré.
Merci encore.