Форум сайта python.su
0
Пытаюсь создать бота Telegram на python. Этот бот по команде пользователя запускает многопоточность с разными циклами выполнения задачи. Мне необходимо сделать так, чтобы пользователь при вводе команды (в данном случае это /start) с определенным значением, например /start stop (значение stop), останавливал все потоки, а потом снова мог их успешно запустить командой.
def startarg(arg): return arg.split()[1] @bot.message_handler(commands=["start"]) def start(message): for i in range(1): try: start = startarg(message.text) bot.send_message(message.chat.id, 'Запущено') except: start = 'error' break if start == 'error': bot.send_message(message.chat.id, 'Вы не указали значение!') else: if start[0] == '1': start = '+'+start def some_0(): while True: try: except: pass def some_1(): while True: try: except: pass def some_2(): while True: try: except: pass th_0, th_1, th_2 = Thread(target=some_0), Thread(target=some_1), Thread(target = some_2) if __name__ == '__main__': th_0.start(), th_1.start(), th_2.start() th_0.join(), th_1.join(), th_2.join()
Офлайн
857
Тебе надо сделать поток, управляющий потоками, и подписать его на сигнал перезапуска потоков. Когда команда будет поступать снаружи, при этом событии нужно подавать сигнал управляющему потоку, чтобы он отдал команды потокам остановиться/запуститься, которыми управляет.
Так что, возможно, это ещё рановато для тебя. Поучись сначала.
Офлайн