pythonスレッドを強制終了する
Pythonでは、スレッドはOSレベルで管理されているため強制停止することはできません。ただし、スレッドの実行を停止するためのテクニックを使用することができます。一般的な手法を以下に示します。
- フラグを使用した方法: bool型の変数を一つ用意し、スレッドの実行を制御します。停止したいタイミングになったらフラグをFalseにし、スレッドは適切なタイミングでフラグをチェックして実行を停止します。
import threading
def my_thread():
while running:
# 线程执行的代码
running = True # 标志位,控制线程执行
thread = threading.Thread(target=my_thread)
thread.start()
# 停止线程
running = False
thread.join()
上の例では、runningはスレッドの実行を制御するグローバル変数です。スレッド内では、runningの値によって実行を継続するかどうかを判断します。
- スレ
- 事象
- イベント
- イベント
import threading
def my_thread(stop_event):
while not stop_event.is_set():
# 线程执行的代码
stop_event = threading.Event() # Event对象,用于控制线程执行
thread = threading.Thread(target=my_thread, args=(stop_event,))
thread.start()
# 停止线程
stop_event.set()
thread.join()
上記の例では、stop_eventはスレッドの実行を制御するためのEventオブジェクトです。スレッド内では、stop_event.is_set()の戻り値がTrueの場合、実行を停止します。
これらの手法を用いると適切なタイミングでスレッドを停止するのみで、強制的に即座に停止させることはできないことに注意する。また、スレッドは実行中に何らかのリソース(例えば、ロック、ファイルハンドルなど)を保持している可能性があり、スレッドを停止する際には、これらのリソースが適切に開放されるようにしなければならず、さもないとリソースリークや不具合を引き起こす可能性がある。