この詳細を除いて、Abamert は私が準備していた回答で私を打ち負かしました。
外部関数が Python インタープリターを介して実行される場合に限り、(たとえば、コンパイルされたモジュールから) 変更することはできませんが、この他の質問で説明されている手法を使用して、例外を使用してその関数を呼び出すスレッド。
Python でスレッドを強制終了する方法はありますか?
もちろん、呼び出していた関数を制御できた場合、その回答の StoppableThread クラスはこれに適しています。
import threading
class StoppableThread(threading.Thread):
"""Thread class with a stop() method. The thread itself has to check
regularly for the stopped() condition."""
def __init__(self):
super(StoppableThread, self).__init__()
self._stop = threading.Event()
def stop(self):
self._stop.set()
def stopped(self):
return self._stop.isSet()
class Magical_Attack(StoppableThread):
def __init__(self, enval):
self._energy = enval
super(Magical_Attack, self).__init__()
def run(self):
while True and not self.stopped():
print self._energy
if __name__ == "__main__":
a = Magical_Attack(5)
a.start()
a.join(5.0)
a.stop()