Python'da, sorunumdaki belirli bir python iş parçacığına ileti göndermemi sağlayan yerleşik bir sözdizimi var mı? Windows'da pyQt veya :: PostMessage() öğesindeki "sıralı bağlı sinyal" gibi. Program parçaları arasında eşzamansız iletişim için buna ihtiyacım var: ağ olaylarını işleyen bir dizi ileti var ve bu olayları olayları güvenli tek iş parçacığı haline çeviren tek bir 'mantık' iş parçacığına göndermeleri gerekiyor.Python'da yerleşik çapraz iş parçacıkları var mı?
cevap
Queue modülü python, açıkladığınız şeye çok uygundur.
Tüm iş parçacıklarınız arasında paylaşılan bir sıraya sahip olabilirsiniz. Ağ olaylarını işleyen iş parçacıkları, olayları sıraya göndermek için queue.put kullanabilir. Mantıksal iş parçacığı, sıradan olayları almak için queue.get kullanır.
import Queue
# maxsize of 0 means that we can put an unlimited number of events
# on the queue
q = Queue.Queue(maxsize=0)
def network_thread():
while True:
e = get_network_event()
q.put(e)
def logic_thread():
while True:
# This will wait until there are events to process
e = q.get()
process_event(e)
Aradığınızı tam olarak emin değilim. Fakat bunun için kesinlikle yerleşik bir sözdizimi yoktur. queue ve threading modüllerine bir göz atın. Her tür eşzamanlı ve eşzamanlı olmayan iletişimi uygulamak için kullanılabilecek Kuyruklar, Koşullar, Olaylar, Kilitler ve Semaforlar gibi birçok yararlı şey var.
Bir iş parçacığındaki bir işlevi çağırmanın kolay bir yolunu arıyorum ve bağlantılı bir işlev başka bir iş parçacığında (sıraya alınmış delege) çağrılır. Senkronizasyon ilkelleri, hepsini 'el ile' yapmak için zorlanacak mı? – grigoryvp
@Eye of Hell: Lütfen aslında kuyruk modülü belgelerini okuyun. İş parçacıkları arasında "bir işlevi çağırmak" gibi görünen şey genellikle bir iş parçacığından diğerine geçirilen isteklerin sırasıdır; Alıcı iplik talebi reddeder ve işlevi çağırır. –
ah, hatırlıyorum, işlev python'da birinci sınıf nesne midir? (yerleşik delege). Bir 'işlev çağrısı' sıraya koymak ve gerçek iş parçacığı dequeue gerçek çağrı yapmak için herhangi bir bilinen bilinen sözdizimi mi? Peki ya işlev argümanları marshalling? – grigoryvp
- 1. Kilitli FIFO üzerinde bekleyen iş parçacıkları var mı?
- 2. C++ basit iş parçacıkları örnek
- 3. İş paylaşımı mekanizması (OpenMP'de) iş parçacıkları yürütülürken iş parçacıkları arasındaki işlemleri iletiyor mu?
- 4. Pthread muteksleri, paylaşılan bellekte iş parçacıkları boyunca çalışır mı?
- 5. İş parçacıkları için Java dosya izinleri
- 6. Win32 API ile iş parçacıkları nasıl oluşturulur?
- 7. Her zaman uyumsuzluklar için iş parçacığı iş parçacıkları kullanın async
- 8. Chrome'da yerleşik bir Çağrı Yığını var mı?
- 9. Liferay'de yerleşik web analizi aracı var mı?
- 10. Android'de yerleşik bir PDF görüntüleyici var mı?
- 11. Log4net günlüğü, paralel iş parçacıkları ile çalışmaz
- 12. Oluşturulan bir anahtara göre iş parçacıkları arasında karşılıklı dışlama için Java'da genel bir çözüm var mı?
- 13. Java: Çok iş parçacıklı ve 2 boyutlu iş parçacıkları
- 14. UWP çapraz iş parçacığı bilgileri
- 15. Diğer iş parçacıkları tamamlanıncaya kadar ana iş parçacığı nasıl engellenir?
- 16. Parçacıkları?
- 17. Nümerik dizi veya pandalarla pythonda rutini sadeleştirme
- 18. XCode 4.2: uygulama kilitlendiğinde, iş parçacıkları nadiren aramaları görüntüler.
- 19. Kullanıcı düzeyinde iş parçacıkları (ULT) ve çekirdek düzeyi iş parçacıkları (KLT) eşzamanlı yürütme açısından nasıl farklılıklar gösterir?
- 20. Bir tarayıcıda yerleşik HTML5 form doğrulaması var mı kontrol edin?
- 21. HSV'den RGB'ye yerleşik bir C#/NET Sistem API'si var mı?
- 22. Perl'de yerleşik bir doğru/yanlış boole değeri var mı?
- 23. Windows Forms'ta yerleşik bir onay iletişim kutusu var mı?
- 24. Herhangi bir büyük tarayıcıda yerleşik bir HTML doğrulayıcı var mı?
- 25. Python'da Perl'in eki gibi yerleşik bir işlev var mı?
- 26. Yatay dize birleştirme için yerleşik bir işlev var mı?
- 27. MVC 4'ün yerleşik bir site haritası çözümü var mı?
- 28. BackgroundWorker - Çapraz iş parçacığı geçerli değil
- 29. Android NDK içinde iş parçacıkları arasında bir JavaVM * paylaşma
- 30. iç içe döngüler, iç döngü paralelleştirme, tekrar iş parçacıkları
Teşekkürler! Bir etkinliğin içinde bir işlev çağrısı koymak için herhangi bir yolu var mı? PostConnectionStatus (STATUS) gibi iş parçacığı kod çağrı işlevleri ve çalışan iş parçacığı OnConnectionStatus (i_status) gibi işleyicilere sahiptir. Bir olay ile otomatik olarak çağrıları işlevlendirmek için herhangi bir yolu var mı? – grigoryvp
Python'da işlevler, diğer her şey gibi nesnelerdir ve diğer nesneler gibi etrafından geçirilebilir. Böylece, etkinlikle çağrılacak bir işlev de ekleyebilirsiniz, örneğin q.put ((e, PostConnectionStatus)). Mantıksal iş parçacığınız daha sonra "e, func = q.get()" yapabilir. Bu yardımcı olur mu? –
emin şey, teşekkürler. Değişken değişken sayısı aynı şekilde sıralanabilir mi? – grigoryvp