Pythonで予期せず長時間実行されるスレッドを終了するには、どのような方法が推奨されますか?私は シグナルとスレッドの両方が 同じプログラムで使用されている場合、いくつか注意が必要長時間実行しているPythonスレッドを終了する
以来、SIGALRMを使用することはできません。 への基本的なことは、信号とスレッドを同時に使用することを覚えておいてください。 signal()操作を実行します。 実行中です。どのスレッドもalarm()、getsignal()、pause()、 setitimer()またはgetitimer()を実行できます。 (これは、基本となるスレッド 実装が の送信がサポートされていた場合でも、Pythonの信号 モジュールによって強制されるだけ メインスレッドが新しい信号 ハンドラを設定することができ、メインスレッドは信号 を受信する 一つだけになります個々のスレッドへのシグナル)。この は、信号が のスレッド間通信の手段として使用できないことを意味します。代わりに、ロックを使用してください。
更新:私のケースブロックの各スレッド - urllib2モジュールを使用してWebページをダウンロードしていますが、動作が非常に遅いサイトでは時間がかかることがあります。だからこそ遅いスレッドを終了したいのですが
問題はあなたが時間がかかりすぎる(例えばurllib.read()、ある場合にはタイムアウトを無視する)中断したい。 – kolinko
あなたはそれを独自のスレッドで実行すると、単にそれを待つことを止められませんか?最終的には完了/失敗/終了し、それだけで死ぬでしょうか? –