2010-05-12 5 views
6

Bazı eylemler gerçekleştiğinde çalıştırılan bir iş parçacığım var. Programın mantığı göz önüne alındığında, iş parçacığının başka bir örneği çalışırken hala iş parçacığı başlatılamıyor. Ancak bunu ikinci kez çağırdığımda, "RuntimeError: iş parçacığı zaten başlatıldı" hatası alıyorum. Thread.is_alive() işlevini kullanarak gerçekten canlı olup olmadığını görmek için bir kontrol ekledim ve aslında öldü.Python Sonlandırıldı Thread Yeniden Başlatılamadı

Neyi yanlış yapıyorum?

Gerektiğinde daha fazla ayrıntı sağlayabilirim.

cevap

11

Konular yeniden başlatılamıyor. Yeniden başlatmak için Thread'i yeniden oluşturmanız gerekir.

2

Sen resmen belgelenmiş değildir

thread._Thread__started = False 

ayarı deneyebilirsiniz, bu yüzden kendi risk kullanın! :)

+0

Zaten başlatmak için _Thread__stop() kullanıyorum ... Bir tane eklemek çok kötü görünmüyor, ama programımı gerçekten hacky yapar ... – bfrguci

6

Python belgelerinden: start() iş parçacığı faaliyetini başlatır. Bu, iş parçacığı başına en çok bir kez çağrılmalıdır. Nesnenin ayrı bir iş parçacığı içinde çağrılması için nesnenin run() yöntemini ayarlar. Eğer threading.Thread bir sınıf türetmek Eğer

size run yönteminin sonunda Thread.__init__(self) ekleyebilir ve tekrar başlamak aramak mümkün olacak ve bittiğinde otomatik olarak kendini yeniden başlatmak gerekir.