Как остановить поток Thread?

Функция вызывает поток (индикатор выполнения этой функции). Как мне остановить поток по завершению работы этой функции.
def main_func():
    thread_indicator = threading.Thread(target=indicator_edit)
    thread_indicator.start()
    time.sleep(5) # do something
    # thread.kill()
  • Вопрос задан
  • 669 просмотров
Пригласить эксперта
Ответы на вопрос 1
Нативного решения этой задачи нет. Находил такой удобный пример.

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 точно завершил свое выполнение.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы