Wątki w aplikacji PyQt: Używać wątków Qt czy wątków Pythona?

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

Piszę aplikację z graficznym interfejsem użytkownika, która regularnie pobiera dane przez połączenie internetowe. Ponieważ to pobieranie zajmuje trochę czasu, powoduje to, że interfejs użytkownika nie odpowiada podczas procesu pobierania (nie można go podzielić na mniejsze części). Chciałbym zlecić połączenie internetowe osobnemu wątkowi roboczemu.

[Tak, wiem, teraz mam dwa problemy.]

W każdym razie aplikacja używa PyQt4, więc chciałbym wiedzieć, co jest lepsze wybór to: użyć wątków Qt czy użyć modułu Python threading? Jakie są zalety / wady każdego z nich? A może masz zupełnie inną sugestię?

Edytuj (ponowna nagroda): Chociaż rozwiązanie w moim konkretnym przypadku prawdopodobnie będzie korzystać z nieblokującego żądania sieci, takiego jak Jeff Ober i Łuk√°≈° Lalinsk√Ω zasugerował (więc zasadniczo pozostawiając problemy ze współbieżnością implementacji sieciowej), nadal chciałbym uzyskać bardziej dogłębną odpowiedź na ogólne pytanie:

Jakie są zalety i wady używania PyQt4? s (np. Qt) wątków przez natywne wątki Pythona (z modułu threading)?


Edytuj 2: Dziękuję wszystkim za Ciebie odpowiedzi. Chociaż nie ma 100% zgodności, wydaje się, że istnieje powszechny konsensus, że odpowiedź brzmi „użyj Qt”, ponieważ zaletą tego jest integracją z resztą biblioteki, która nie powoduje żadnych poważnych wad.

Wszystkim, którzy chcą wybrać między dwiema implementacjami wątków, gorąco polecam przeczytanie wszystkich odpowiedzi podanych tutaj, w tym wątku listy dyskusyjnej PyQt że opat linki do.

Było kilka odpowiedzi, które brałem pod uwagę w przypadku nagrody; w końcu wybrałem opata jako bardzo istotne zewnętrzne odniesienie; było to jednak bliskie połączenie.

Jeszcze raz dziękuję.