А вообще встаёт вопрос: а на кой тебе это?
global
. Не злись за тупые вопросы, ведь даже профессионалы когда-то были новичками. @bot.message_handler(content_types = ['text'])
def get_user_text(message):
if message.text == '/stop_thread':
if 'stop_thread' in globals():
stop_thread = True
print('Получен запрос на остановку потока')
print('stop_thread =', stop_thread)
# в консоли выводится, что значение стало True, но до потока оно почему-то не доходит,
# внутри функции start_thread() остается False
#------------
def start_thread():
print(f'Начало отсчета: {datetime.datetime.utcnow()}')
print('stop_thread =', stop_thread)
while not stop_thread:
print('Работает поток... stop_thread =', stop_thread)
print(f'Прошло 3 секунды, {datetime.datetime.utcnow()}')
#bot.send_message(5204768175, f'Прошло 3 секунды, {datetime.datetime.utcnow()}')
time.sleep(3)
MyThread.join()
stop_thread = False
MyThread = threading.Thread(target = start_thread)
MyThread.start()
# стартуем бота
bot.polling(none_stop = True)
Складывается ощущение, что бот работает в своем потоке и не может передать значение переменной потоку, который я создаю. Поэтому и обращаюсь к тем, кто умеет. def set_globals():
global stop_thread
global MyThread
stop_thread = False
def start_thread():
print(f'Начало отсчета: {datetime.datetime.utcnow()}')
print('stop_thread =', stop_thread)
while not stop_thread:
print('Работает поток... stop_thread =', stop_thread)
print(f'Прошло 3 секунды, {datetime.datetime.utcnow()}')
time.sleep(3)
def main():
set_globals()
MyThread = threading.Thread(target = start_thread)
MyThread.start()
# стартуем бота
bot.polling(non_stop = True)
if __name__ == '__main__':
main()