Saya sedang menulis aplikasi GUI yang secara teratur mengambil data melalui koneksi web. Karena pengambilan ini membutuhkan waktu beberapa saat, ini menyebabkan UI menjadi tidak responsif selama proses pengambilan (tidak dapat dibagi menjadi beberapa bagian yang lebih kecil). Inilah mengapa saya ingin melakukan outsourcing koneksi web ke utas pekerja terpisah.
[Ya, saya tahu, sekarang saya punya dua masalah .]
Bagaimanapun, aplikasinya menggunakan PyQt4, jadi saya ingin tahu pilihan apa yang lebih baik: Gunakan utas Qt atau gunakan threading
modul Python ? Apa kelebihan / kekurangan masing-masing? Atau apakah Anda memiliki saran yang sama sekali berbeda?
Edit (re bounty): Sementara solusi dalam kasus khusus saya mungkin akan menggunakan permintaan jaringan non-pemblokiran seperti yang disarankan Jeff Ober dan Lukáš Lalinský (jadi pada dasarnya menyerahkan masalah konkurensi ke implementasi jaringan), saya masih ingin yang lainnya jawaban mendalam untuk pertanyaan umum:
Apa keuntungan dan kerugian menggunakan thread PyQt4 (yaitu Qt) dibandingkan thread asli Python (dari threading
modul)?
Edit 2: Terima kasih atas jawaban Anda. Meskipun tidak ada kesepakatan 100%, tampaknya ada konsensus luas bahwa jawabannya adalah "gunakan Qt", karena keuntungannya adalah integrasi dengan seluruh pustaka, sementara tidak menyebabkan kerugian nyata.
Bagi siapapun yang ingin memilih di antara dua implementasi threading, saya sangat menyarankan mereka membaca semua jawaban yang disediakan di sini, termasuk utas milis PyQt yang ditautkan oleh abbot .
Ada beberapa jawaban yang saya pertimbangkan untuk hadiah itu; pada akhirnya saya memilih kepala biara untuk referensi eksternal yang sangat relevan; itu, bagaimanapun, panggilan dekat.
Terima kasih lagi.