Threading em um aplicativo PyQt: Use threads Qt ou threads Python?

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

Estou escrevendo um aplicativo de GUI que recupera dados regularmente por meio de uma conexão da Web. Como essa recuperação demora um pouco, isso faz com que a interface do usuário não responda durante o processo de recuperação (ela não pode ser dividida em partes menores). É por isso que Gostaria de terceirizar a conexão da Web para um thread de trabalho separado.

[Sim, eu sei, agora tenho dois problemas.]

De qualquer forma, o aplicativo usa PyQt4, então eu gostaria de saber qual é o melhor escolha é: Use os threads do Qt ou use o módulo Python threading? Quais são as vantagens/desvantagens de cada um? Ou você tem uma sugestão totalmente diferente?

Editar (re bounty): Enquanto a solução no meu caso específico provavelmente será usar uma solicitação de rede sem bloqueio como Jeff Ober e Luk√°≈° Lalinsk√Ω sugerido (basicamente deixando os problemas de simultaneidade para a implementação da rede), eu ainda gostaria de uma resposta mais aprofundada para a pergunta geral:

Quais são as vantagens e desvantagens de usar o PyQt4" s (ou seja, Qt"s) threads sobre threads nativos do Python (do módulo threading)?


Edit 2: Obrigado a todos Embora não haja 100% de concordância, parece haver um consenso generalizado de que a resposta é "use Qt", já que a vantagem disso é a integração com o resto da biblioteca, sem causar desvantagens reais.

Para quem quer escolher entre as duas implementações de encadeamento, eu recomendo que leia todas as respostas fornecidas aqui, incluindo o encadeamento da lista de discussão do PyQt que abade links para.

Houve várias respostas que considerei para a recompensa; no final, escolhi abade's para a referência externa muito relevante; foi, no entanto, por pouco.

Obrigado novamente.