Нативного решения этой задачи нет. Находил такой удобный
пример.
class StoppableThread(threading.Thread):
"""Thread class with a stop() method. The thread itself has to check
regularly for the stopped() condition."""
def __init__(self, *args, **kwargs):
super(StoppableThread, self).__init__(*args, **kwargs)
self._stop_event = threading.Event()
def stop(self):
self._stop_event.set()
def stopped(self):
return self._stop_event.is_set()
Тогда у вашего потока будет метод stop(), который можно вызвать. Но сама функция, работающая в этом потоке, должна регулярно проверять значение stopped() и выходить как только значение стало True.
Функция вызывающая stop() должна выполнить join(), чтобы убедиться в том, что Thread точно завершил свое выполнение.