SORU
20 EKİM 2009, Salı


PyQt bir uygulama iş parçacığı: Qt parçacıkları veya Python iş parçacığı kullanan?

Düzenli bir web bağlantısı üzerinden veri alan bir GUI uygulaması yazıyorum. Bu alımı bir süre aldığından, bu alma işlemi sırasında yanıt vermiyor gibi UI (küçük parçalara bölünmüş olamaz) neden olur. Bu ayrı bir iş parçacığı için web bağlantısı fason etmek istiyorum nedeni budur.

[Evet, biliyorum, şimdi two problems.] var

Her neyse, uygulamayı daha iyi bir seçim olduğunu bilmek istiyorum PyQt4 kullanır: Qt parçacığı Kullanımı veya Python threading modül kullanmak? Her avantajları ve dezavantajları nelerdir? Ya da tamamen farklı bir öneriniz var mı?

Edit (re kelle):İse çözüm benim özel durumda muhtemelen kullanarak engellenmeyen bir ağ isteği gibi Jeff Ober Lukáš Lalinský önerilen (yani temelde terk eşzamanlılık sorunlarına ağ uygulaması), bence hala daha derinlemesine cevap vermek genel bir soru:

PyQt4 (......yani Qt) kullanarak yerel Python konuları üzerinde iş parçacığı (threading modülünden) avantajları ve dezavantajları nelerdir?

< / ^ hr .

Edit 2:Teşekkürler cevaplar için. Ancak yok 100% anlaşma gibi gözüküyor yaygın bir fikir birliği bu cevap "kullanım Qt", beri avantajı Bu entegrasyon ile geri kalanı Kütüphanesi ise neden gerçek dezavantajları.

Herkes iki iş parçacığı uygulamaları arasında seçim yapmak için arıyorum, ben çok tüm cevaplar burada, PyQt e-posta listesine dahil abbot bağlanan iplik okumak öneririz.

Ödül için düşündüm ve bazı cevaplar vardı; sonunda çok alakalı bir dış başvuru için abbot seçtim; ancak, bu çok yakındı.

Tekrar teşekkürler.

CEVAP
29 EKİM 2009, PERŞEMBE


Bu discussed çok uzun PyQt posta listesinde önceydi. Giovanni Bajo alıntı comments konuyla ilgili:

Çoğunlukla aynı. Temel fark QThreads daha iyi olur Qt (asynchrnous, loop, vb/slot olayı bildirir.) ile entegre. Ayrıca, Python bir iş parçacığı (yapamazsın mesela Qt kullanabilirsiniz. QApplication ile ana konuya olay sonrası.postEvent): bunun için bir QThread çalışmak gerekir.

Başparmak genel bir kural, eğer bir şekilde Qt ile etkileşim ve Python konuları yoksa kullanmak için gidiyoruz QThreads kullanmak olabilir.

Ve PyQt yazarı bu konuda daha önce açıklama: "aynı yerli iplik uygulamaları etrafında hem sarma". Ve her ikisi de uygulamaları aynı şekilde GİL kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MikeyMacintosh

    MikeyM

    28 Aralık 2009
  • SegaAmerica

    SegaAmerica

    5 Mart 2008
  • xCraash

    xCraash

    6 Temmuz 2012