Threading in einer PyQt-Anwendung: Verwenden Sie Qt-Threads oder Python-Threads?

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

Ich schreibe eine GUI-Anwendung, die regelmäßig Daten über eine Webverbindung abruft. Da dieser Abruf eine Weile dauert, führt dies dazu, dass die Benutzeroberfläche während des Abrufvorgangs nicht reagiert (sie kann nicht in kleinere Teile aufgeteilt werden). Aus diesem Grund Ich möchte die Webverbindung in einen separaten Worker-Thread auslagern.

[Ja, ich weiß, jetzt habe ich zwei Probleme.]

Wie auch immer, die Anwendung verwendet PyQt4, also würde ich gerne wissen, was besser ist Wahl ist: Qt-Threads verwenden oder das Python-threading-Modul verwenden? Was sind jeweils Vor-/Nachteile? Oder haben Sie einen ganz anderen Vorschlag?

Edit (re bounty): Während die Lösung in meinem speziellen Fall wahrscheinlich eine nicht blockierende Netzwerkanfrage wie Jeff Ober und Luk√°≈° Lalinsk√Ω vorgeschlagen (wobei ich die Nebenläufigkeitsprobleme im Grunde der Netzwerkimplementierung überlasse), hätte ich dennoch gerne eine ausführlichere Antwort auf die allgemeine Frage:

Was sind die Vor- und Nachteile der Verwendung von PyQt4?“ s- (dh Qt-) Threads über native Python-Threads (aus dem Modul threading)?


Edit 2: Vielen Dank für Sie Antworten. Obwohl es keine 100%ige Übereinstimmung gibt, scheint es einen weit verbreiteten Konsens zu geben, dass die Antwort "Qt verwenden" lautet, da dies den Vorteil hat ist die Integration mit dem Rest der Bibliothek, ohne wirkliche Nachteile zu verursachen.

Jedem, der zwischen den beiden Threading-Implementierungen wählen möchte, empfehle ich dringend, alle hier bereitgestellten Antworten zu lesen, einschließlich des PyQt-Mailinglisten-Threads dieser Abt Links zu.

Es gab mehrere Antworten, die ich für das Kopfgeld in Betracht gezogen habe; Am Ende habe ich mich für Abbots als sehr relevante externe Referenz entschieden; es war jedoch knapp.

Nochmals vielen Dank.