Sto scrivendo un'applicazione GUI che recupera regolarmente i dati tramite una connessione web. Poiché questo recupero richiede un po 'di tempo, l'interfaccia utente non risponde durante il processo di recupero (non può essere suddivisa in parti più piccole). Questo è il motivo per cui vorrei esternalizzare la connessione Web a un thread di lavoro separato.
[Sì, lo so, ora ho due problemi .]
Ad ogni modo, l'applicazione utilizza PyQt4, quindi mi piacerebbe sapere qual è la scelta migliore: utilizzare i thread di Qt o utilizzare il threading
modulo Python ? Quali sono i vantaggi / svantaggi di ciascuno? O hai un suggerimento completamente diverso?
Modifica (re bounty): mentre la soluzione nel mio caso particolare probabilmente utilizzerà una richiesta di rete non bloccante come suggerita da Jeff Ober e Lukáš Lalinský (quindi sostanzialmente lasciando i problemi di concorrenza all'implementazione della rete), mi piacerebbe ancora risposta approfondita alla domanda generale:
Quali sono i vantaggi e gli svantaggi dell'utilizzo dei thread di PyQt4 (cioè Qt) rispetto ai thread Python nativi (dal threading
modulo)?
Modifica 2: grazie a tutti per le vostre risposte. 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 ciò è l'integrazione con il resto della libreria, senza causare svantaggi reali.
A 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 a cui si collega l' abate .
C'erano diverse risposte che ho preso in considerazione per la taglia; alla fine ho scelto l'abate per il riferimento esterno molto rilevante; era, tuttavia, una chiamata ravvicinata.
Grazie ancora.