Estoy escribiendo una aplicación GUI que recupera datos con regularidad a través de una conexión web. Dado que esta recuperación lleva un tiempo, esto hace que la interfaz de usuario no responda durante el proceso de recuperación (no se puede dividir en partes más pequeñas). Es por eso que me gustaría subcontratar la conexión web a un hilo de trabajo separado.
[Sí, lo sé, ahora tengo dos problemas ].
De todos modos, la aplicación usa PyQt4, así que me gustaría saber cuál es la mejor opción: ¿Usar los hilos de Qt o usar el threading
módulo Python ? ¿Cuáles son las ventajas / desventajas de cada uno? ¿O tienes una sugerencia totalmente diferente?
Editar (recompensa): si bien la solución en mi caso particular probablemente será usar una solicitud de red sin bloqueo como sugirieron Jeff Ober y Lukáš Lalinský (así que básicamente dejar los problemas de concurrencia a la implementación de la red), todavía me gustaría más respuesta en profundidad a la pregunta general:
¿Cuáles son las ventajas y desventajas de usar subprocesos de PyQt4 (es decir, Qt) sobre subprocesos nativos de Python (del threading
módulo)?
Edición 2: Gracias a todos por sus respuestas. Aunque no hay un acuerdo del 100%, parece haber un consenso generalizado de que la respuesta es "usar Qt", ya que la ventaja de eso es la integración con el resto de la biblioteca, sin causar desventajas reales.
Para cualquiera que busque elegir entre las dos implementaciones de subprocesos, les recomiendo que lean todas las respuestas proporcionadas aquí, incluido el hilo de la lista de correo de PyQt al que abbot se vincula.
Había varias respuestas que consideré para la recompensa; al final elegí abad's como referencia externa muy relevante; sin embargo, estuvo cerca.
Gracias de nuevo.