2012-02-21 84 views
0

我有一個線程運行時它有一個無限循環。 當另一個線程停止時,我希望再次重新設置所有線程, 線程有套接字在彼此之間傳輸數據。 我使用Python線程重啓

node1._Thread__stop() 

功能停止線程乳寧,但是當我嘗試創建具有相同名稱的一個新的線程:

node1 = node.node(8081,8082,token,1,"Node A",0) 
node1.start() 

它給出了一個錯誤

[Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted. 

我不確定停止函數是否對線程起作用,因爲我有一個套接字的超時子句,如果它沒有收到任何要打印的超時時間。此錯誤發生後打印。

這將是一個線程/插座

回答

0

更好復位我不知道什麼是你想要的。不過,我建議你看看這個answer的相關問題。

重要的一點是,當你持有一個像socket這樣的資源時,終止一個線程並不是一個好主意。正確的做法是使用任何同步機制(上面引用的答案使用threading.Event的示例,但如果它更適合您的需求,它可能是例如threading.Condition)可用於釋放資源,因爲它似乎你需要,重置一些內部數據從頭開始。

我希望這會有所幫助。

+0

這是我在寫這個問題之前實際看到的第一件事,我認爲他的回答太複雜了,我不希望有什麼。我只是簡單地希望完全終止或刪除線程和套接字。我不需要保存任何東西。 – DustBunny 2012-02-21 22:57:06

+0

@ user1009731如果您沒有明確關閉套接字,它將一直保持,直到操作系統級別的定時器到期。因此,您將無法在一段時間內重新打開套接字。恐怕你需要實現一些線程同步來關閉那個套接字,即使你不需要保持任何狀態。 – jcollado 2012-02-22 07:31:41