İki konuları çalışan basit bir uygulama yazmak gerekir zamanlanmış dönemlerde ishal, diyelim ki her 1 dakikalık - iplik 2: sadece 'normal' iken 'şeyler'Bükümlü konular ... bunları nasıl kullanmalı? - Konu 1:
yapar Gerçek döngüzamanlanmış aralıklarla çalıştırmak için değil gereklilik eğer ben hiç bükülmüş bakmadıysanız, ama basit uyku (60) yeteri kadar iyi değildir ve inşaat gibi olurdu:
l = task.LoopingCall(timed_thread)
l.start(60.0)
reactor.run()
orada ne istediğini elde etmek için gerçekten basit görünüyordu .
Şimdi, başka bir iş parçacığı nasıl ekleyebilirim?
Burada iki seçenek göreceksiniz:- Kullanım parçacığı kütüphanesi ve benim ederken döngüye iki 'piton lifler' birini çalıştırın ve başka çalışan reactor.run(). Ancak Google bu yaklaşıma itiraz ediyor ve twisted threading
- Twisted threading kullanılmasını önerir. Denediğim şey bu, ama bir şekilde bu bana biraz garip görünüyor.
def timed_thread(): print 'i will be called every 1 minute' return def normal_thread(): print 'this is a normal thread' time.sleep(30) return l = task.LoopingCall(timed_thread) l.start(60.0) reactor.callInThread(normal_thread) reactor.run()
iş gibi görünüyor Yani, fakat:
Burada ile geldi işte! Uygulamayı durduramıyorum. Eğer^C'ye basarsam, hiçbir şey yapmazdım ('callInThread' olmadan sadece beklediğiniz gibi durur).^Z kabuğunu bombalar, ve eğer daha sonra '% 1' i öldürürsem, işlemi öldürür (kabuk rapor eder), fakat 'normal' iş parçacığı çalışmaya devam eder. öldürmek PID ondan kurtulmak olmaz ve tek tedavi -9 öldürür. Gerçekten garip.
So. Neyi yanlış yapıyorum? Bükülmüş iki ipi uygulamak için doğru bir yaklaşım mı? Benimle uğraşmamalı mıyım? Zamanlamalı çağrıları uygulamak için başka 'standart' alternatifler nelerdir? ('Standart' Ben, bunları kolayca yükleyebilirim veya yükleyebilirim, indirmek ve rastgele web sayfalarından bazı rasgele komut dosyaları kullanmak istemiyorum).
Konuları çok dikkatli bir şekilde bükülmüş (ve genel olarak python) olarak kullanın. "Ana" nın ne yapıyor? Sıklıkla kullanılan bir kullanım durumu, protokol istemcisi/sunucusu olarak istekte bulunur veya istekte bulunur. Reaktör, bu istekleri ele alacaktır ve engellemenin engellenmediğini varsayarak, belirli bir zaman aralığında belirli bir işlevi çalıştırabileceklerdir. – MattH
İş parçacığı ile ilgili tehlike, dikkatli değilseniz, bir iş parçacığı, başka bir iş parçacığı tarafından kullanıldığında, verileri tahmin edilemeyen davranışlara neden olacak şekilde değiştirebilir. – MattH
tüm 'ana' amacı sadece bu iki iş parçacığı ateş etmektir (aslında örnekte görebildiğiniz gibi sadece 4 satır), her iki işlev biraz daha detaylıdır, ancak diğerini işlemek açısından olağandışı hiçbir şey onu denetlemez. ama bu gerçekten önemli değil). Bu iki iş parçacığı herhangi bir veri paylaşmıyor btw – rytis