2012-07-30 13 views
6

Bir iş parçacığı kullanarak bir programım var. Programım kapatıldığında, iş parçacığım hala çalışıyor ve normal. İş parçamın ana programın sonlandırıldığını nasıl algıladığını bilmek isterim; kendi başına SADECE. Bunu nasıl yaparım?python: İş parçacığım yetim ne zaman ortaya çıkar?

İş parçacığım sonsuz bir döngüde ve Kuyrukta birçok nesneyi işliyor. İş parçacığı bir daemon olarak tanımlayamıyorum, ancak ana programın sonunda bazı verileri kaybedebilirim. Bunu istemiyorum, ana programım kapatıldığında bir boole değeri ayarladı.

cevap

4

, üzerinde is_alive() çağırabilir.

Alternatif olarak, tüm şu anda yaşayan parçacığı listesini almak ve ana iş parçacığı orada olup olmadığını görmek için kontrol etmek threading.enumerate() çağırabilir.

Hatta bu imkansız, o zaman çocuk diş geriye kalan tek olmayan cini iplik olup olmadığını görmek için kontrol etmek mümkün olabilir.

+0

Sorunumu çözdüğünüz için teşekkür ederiz. thread.getName() bulmak ("MainThread") = -1 ise:.! thread.is_alive() = Doğru ise: Başka print "MainThread durdurulur" () threading.enumerate içinde parçacığı için ' : "MainThread çalışıyor" yazdı – user1528760

0

Yöneticiniz kaç tane açık iş parçacığı izlediyse çalışır, o zaman girişten açıldığında çocuklar kendilerini öldürdüler? Böylece ebeveyn, verileri sıraya itmeye başlayacak ve işçiler sıradan veri tüketeceklerdi. Eğer bir işçi belirli bir zaman aşımı süresi boyunca kuyrukta hiçbir şey bulamazsa, kendini öldürür. Ana iş parçacığı daha sonra kaç işçinin çalıştığını izleyecek ve aktif işçilerin sayısı belirli bir eşiğin altındaysa yeni işçilere periyodik olarak başlayacaktır. Eğer ana iş parçacığı için bir tanıtıcı sağlayabilirseniz

İlgili konular