как изменить мой код для исправления потоков python(pyTelegramBotAPI), которые можно запустить только один раз?

Создаю телеграм-бота. Я запускаю таймер на кнопке. Ниже приведен следующий код:

      class MyThread(Thread):
    def __init__(self, event):
        Thread.__init__(self)

    def run(self):            
            time.sleep(5)
            print("my thread")     
                        
stopFlag = Event()
thread = MyThread(stopFlag)

@bot.message_handler(content_types=['text'])
def buttons(message):
    if message.chat.type == 'private':
        if message.text == 'Запуск таймера 1':
            if thread.is_alive():
                bot.send_message(message.chat.id, "wait for the timer to end")                
            else: 
                thread.start()
                bot.send_message(message.chat.id, "timer started!")

Когда я нажимаю кнопку после истечения таймера, я получаю «потоки могут быть запущены только один раз», что имеет смысл, поскольку у меня нет многопоточной версии кода. Как сделать многопоточный вариант, чтобы таймер можно было запускать бесконечно?

1 ответ

Из потоковой документации :

жив()

Вернуть, жив ли поток.

Этот метод возвращает True непосредственно перед запуском метода run(), пока не завершится работа метода run().

После того, как это закончится, thread.is_alive() возвращает вас Falseснова, и вы пытаетесь запустить его второй раз, но безуспешно. Вам необходимо инициализировать новый MyThread объект, чтобы запустить его снова.

Другие вопросы по тегам