時には、このようなAの必要性は以前にメインスレッドで作成されたスレッドを殺すために必要が、いくつかのケースでは、そこにある、あなたは、次のメソッドを使用することができます。
輸入スレッド インポート時間 インポートは、検査 輸入ctypesの デフ:_async_raise(TID、exctype) 「」「IDがTIDのスレッドで例外を発生させます『』」 もし ないinspect.isclass(exctype): 昇給の例外TypeError(" のみのタイプを上昇させることができます(インスタンスではなく)" ) RES = ctypes.pythonapi.PyThreadState_SetAsyncExc(ctypes.c_long(TID)、ctypes.py_object(exctype)) であれば解像度== 0: 昇給とValueError(" 無効なスレッドID 」) elifの!RES = 1 : #「」「それが1よりも数の大きいを返す場合、あなたは、トラブルになら #あなたが効果を元に戻すEXC = NULLで再びそれを呼び出す必要があります」「」 ctypes.pythonapi.PyThreadState_SetAsyncExc(TID 、なし) 昇給はSystemError(" PyThreadState_SetAsyncExcに失敗しました" ) デフstop_thread(スレッド): _async_raise(thread.ident、SystemExitを) クラスTestThread(threading.Thread): デフ(自己)を実行します。 プリント(" 実行子スレッドを開始" ) ながら、真: プリント(" スリープ1S " ) time.sleep( 1 ) もし __name__ == " __main__ " : 印刷(" 実行するメインスレッドを開始する" ) T = TestThread() t.start() time.sleep(3 ) stop_thread(T) 印刷(「メインスレッド終了」)
内蔵されたAPIのPythonを呼び出すことにより、例外がスレッドが終了、スレッド内でスローされます。