2012-02-21 22 views
0

実行時にスレッドが無限ループになっています。 別のスレッドが停止すると、すべてのスレッドを再度リセットしたい、 スレッドには、相互にデータを転送するソケットがあります。 私はスレッドruningてを停止する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. 
を配ります

ソケットに対してタイムアウト句があるので、タイムアウトを印刷するものが何も受信されない場合は、スレッドでstop関数が機能しているかどうかはわかりません。エラーが発生した後に印刷されます。私はあなたが探しているものについてはよく分からないスレッド/ソケット

答えて

0

のより良いリセットされるもの

。しかし、私はこのanswerを関連する質問に見ることをお勧めします。

重要な点は、あなたの場合のようにソケットなどのリソースを保持しているスレッドを終了させることはお勧めできません。上記の回答にはthreading.Eventの例が使われていますが、リソースを解放するために利用可能な場合はthreading.Conditionなどがあります)最初から開始するために内部データをリセットしてください。

こちらがお役に立てば幸いです。

+0

私が実際にこの質問を書く前に見たことは、彼の答えは私が望むものに対してはあまりにも複雑だと思った。スレッドとソケットを完全に終了または削除したいだけです。私は何も保存する必要はありません。 – DustBunny

+0

@ user1009731ソケットを明示的にクローズしないと、オペレーティングシステムレベルのタイマーが切れるまで、ソケットは閉じられません。したがって、しばらくの間ソケットを再オープンすることはできません。状態を保持する必要がない場合でも、ソケットを閉じるためにスレッド同期を実装する必要があります。 – jcollado

関連する問題