ここで私がやろうとしているのは、キーボード割り込みを使用して、プログラム内の進行中のすべてのスレッドを終了することです。これは、スレッドが作成される私のコードの簡略化されたバージョンです。
for i in taskDictionary:
try:
sleep(60)
thread = Thread(target = mainModule.executeThread)
thread.start()
except KeyboardInterrupt:
thread.__stop()
プログラム自体ははるかに複雑で、スレッドに影響を与えるさまざまな変数を考慮し、タスクがスレッド化されずに1つずつ起動されるシーケンシャルモードで起動するオプションもあるため、問題が発生する可能性があります。この小さなバリエーションで、私はちょうど思いついた。私はこれを50/50の結果を生み出す方法で行いました。割り込みは機能しますが、スレッドが正常に終了することはありません。場合によっては、続行しても将来のスレッドの実行を停止することもあれば、割り込みに関する大規模なエラーで終了することもあれば、割り込みがまったく何もしないこともあります。前回これを実行したとき、プログラムは将来のスレッドの実行を停止しましたが、現在のスレッドは停止しませんでした。スレッドが実際に実行されているモジュールに入らずにスレッドを終了する方法はありますか?