2011-01-25 13 views
6

Sunuculara çok sayıda TCP bağlantısı yapan çok iş parçacıklı bir Python uygulaması yazıyorum. Her bağlantı ayrı bir iş parçacığı üzerinde yapılır. Bazen iş parçacığı istemediğim uzun bir süre askıda kalıyor. İpliği belirli bir süre sonra kendini öldürmek için nasıl alabilirim? Ana konudan, çocuk ipliğinin kendisini öldürdüğünü nasıl belirleyebilirim?Python: Zaman aşımından sonra kendini öldürmek için nasıl bir iş parçacığı alabilirim?

Mümkünse bunun nasıl yapılacağını gösteren bir kod snippet'ine minnettarım. Teşekkürler.

Güncelleme sistem Ubuntu 9:10

+0

Askıda ne demek istiyorsun? Takılan ağ işlemi ise, bunun için bir zaman aşımı ayarlayamaz mısınız? –

+0

Evet Bir ağ zaman aşımı ayarlayabilirim, ancak bu başka sorunlara neden olabilir. Dün gelen soruma bakın. Zaman aşımı olmayan bu yöntem çoğu ana bilgisayar için iyi çalışır. Sadece kendini öldürmek için bir iş parçacığı elde etmeyi bilmek isterim. – VacuumTube

+0

Threading hakkında daha fazla bilgi edinin.Timer "Belirtilen bir aralıktan sonra bir işlevi yürüten bir iş parçacığı geçmiş." http://docs.python.org/library/threading.html#timer-objects. Örneğin. Bir zamanlayıcı yapabilir misin, iş parçacığını kapatan bir işlevi çağırır mısın? –

cevap

4

Kısa cevap: Sadece def run() son vermek. Yani, bir soketten veri bekliyorsanız, zaman aşımı ile yapın, daha sonra zaman aşımı oluşmuş olması gereken süre kırmak ve iş parçacığı öldürülür.

isAlive() yöntemiyle bir iş parçacığı yaşıyorsa, ana iş parçacığından kontrol edebilirsiniz.

+0

Bu gerçekten bunu yapmanın tek * mantıklı * yolu. – Arafangion