Pythonでスレッドを終了する方法を教えてください。

Python スレッドを終了させるメソッドは次のとおりです。

  1. フラグを使用した方法: スレッド内でフラグを使用して、スレッドの続行の可否を制御します。フラグが「False」になると、スレッドはループから抜けて スレッドの実行は終了します。
import threading
def my_thread():
while not stop_flag:
# 线程执行的代码
stop_flag = False
thread = threading.Thread(target=my_thread)
thread.start()
# 终止线程
stop_flag = True
thread.join()
  1. スレッドモジュールで提供されるEventオブジェクトを利用できます。Eventオブジェクトは、スレッド間の状態を引き継ぐためのスレッド間通信手段として利用できます。イベントオブジェクトのフラグがTrueの場合、スレッドは継続します。フラグがFalseの場合、スレッドはブロックされ、継続するために待機します。イベントオブジェクトのフラグを設定することで、スレッドを終了できます。
import threading
def my_thread(event):
while not event.is_set():
# 线程执行的代码
event = threading.Event()
thread = threading.Thread(target=my_thread, args=(event,))
thread.start()
# 终止线程
event.set()
thread.join()
  1. スレッドモジュールが提供するTimerオブジェクトを使って: Timerオブジェクトはタイマーで、指定した時間後に特定の関数の実行をトリガーすることができます。タイマーの時間の設定を0にすることで、関数の実行をすぐに起動でき、その結果スレッドを終了できます。
import threading
def my_thread():
# 线程执行的代码
thread = threading.Timer(0, my_thread)
thread.start()
# 终止线程
thread.cancel()

いずれの方法においても、スレッドの終了を通知するには、フラグやイベントを設定する必要があり、スレッド内部ではこれらの状態に基づいて継続するかどうかを判断する必要がある点に注意してください。実際には、Python 内のスレッドを直接終了することはできず、フラグやイベントを設定することで間接的に終了させる仕組みとなります。

bannerAds