2011-01-25 23 views
6

私は、サーバーに多くのTCP接続を行うマルチスレッドPythonアプリケーションを書いています。各接続は別々のスレッドで行われます。時にはスレッドが長時間ハングしてしまい、私が欲しくないことがあります。どのようにして、一定の時間が経過した後にスレッドを強制終了させることができますか?メインスレッドから、子スレッドが自分自身を殺したと判断する方法はありますか?Python:タイムアウト後にスレッドを強制終了させるにはどうすればよいですか?

可能であれば、これを行う方法を示すコードスニペットをいただければ幸いです。ありがとう。

更新 システムは、Ubuntuの9時10

+0

ハングアップとはどういう意味ですか?ハングするネットワーク操作の場合は、タイムアウトを設定できませんか? –

+0

はいネットワークのタイムアウトを設定できますが、それは他のいくつかの問題を引き起こします。昨日から私の質問を参照してください。タイムアウトのないこのメソッドは、ほとんどのホストでうまく動作します。私はスレッドを自分自身を殺す方法を知りたいだけです。 – VacuumTube

+0

threading.Timerについて読む "指定した時間が経過した後に関数を実行するスレッド。" http://docs.python.org/library/threading.html#timer-objects例えば。スレッドを閉じる関数を呼び出すことができますか? –

答えて

4

短い答えである:ちょうどDEFラン()終了を作ります。 ソケットからデータを待っている場合は、タイムアウトでタイムアウトしてください。タイムアウトが発生した場合は、中断してスレッドを強制終了してください。

isAlive()メソッドでスレッドが生存しているかどうかをメインスレッドから確認できます。

+0

これは本当にこれを行うための賢明な方法です。 – Arafangion

関連する問題