Threading in un’applicazione PyQt: utilizzare thread Qt o thread Python?

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

Sto scrivendo un'applicazione GUI che recupera regolarmente i dati tramite una connessione Web. Poiché questo recupero richiede del tempo, l'interfaccia utente non risponde durante il processo di recupero (non può essere suddivisa in parti più piccole). Ecco perché Vorrei esternalizzare la connessione Web a un thread di lavoro separato.

[Sì, lo so, ora ho due problemi.]

Comunque, l'applicazione usa PyQt4, quindi vorrei sapere cosa c'è di meglio la scelta è: Usa i thread di Qt o usa il modulo Python threading? Quali sono i vantaggi/svantaggi di ciascuno? O hai un suggerimento completamente diverso?

Modifica (ricompense): anche se la soluzione nel mio caso particolare utilizzerà probabilmente una richiesta di rete non bloccante come Jeff Ober e Luk√°≈° Lalinsk√Ω suggerito (quindi sostanzialmente lasciando i problemi di concorrenza all'implementazione della rete), vorrei comunque una risposta più approfondita alla domanda generale:

Quali sono i vantaggi e gli svantaggi dell'utilizzo di PyQt4" s (cioè Qt"s) thread su thread Python nativi (dal modulo threading)?


Modifica 2: Grazie a tutti per voi Sebbene non ci sia un accordo al 100%, sembra esserci un consenso diffuso sul fatto che la risposta sia "usa Qt", poiché il vantaggio di è l'integrazione con il resto della libreria, senza causare reali svantaggi.

Per chiunque cerchi di scegliere tra le due implementazioni di threading, consiglio vivamente di leggere tutte le risposte fornite qui, incluso il thread della mailing list PyQt quell'abate link a.

C'erano diverse risposte che ho considerato per la taglia; alla fine ho scelto l'abate per il riferimento esterno molto rilevante; è stata comunque una chiamata ravvicinata.

Grazie ancora.