Честно говоря, правильный способ завязывать на Event или использовать какой-нибудь безопасный подход как Pyro.
Но если ты хочешь понимания, как работает останавливаемость потоков, вот еще один пример:
Программный код:
import threading
class MyThread(threading.Thread):
def __init__(self, stop_event):
super().__init__()
self.stop_event = stop_event
def run(self):
while not self.stop_event.is_set():
# Выполняй какие-то действия
pass
stop_event = threading.Event()
thread = MyThread(stop_event)
thread.start()
# Когда нужно остановить
stop_event.set()
thread.join()