Здравствуйте.
Дело такое.
Есть бот для телеграма.
При отправке команды боту, например, /check 192.168.0.1, он создает thread с именем "id отправителя + адрес" (в нашем примере адрес будет 192.168.0.1).
В этом треде бесконечно выполняется цикл, в котором пингуется адрес и результаты отсылаются обратно тому, кто этот thread создал.
Через какое то время, какие то из тредов надо прибить, а какие то оставить.
Соответственно я посылаю команду например /kill 192.168.0.1
и как мне теперь убить thread с именем "id отправителя + адрес"
как получить все активные потоки я понял:
for i in range(threading.active_count()):
print(threading.enumerate()[i])
а вот что дальше пока не разобрался.
Помогите нубу.
Пример.
рабочий бот по имени TosterQuest_bot
надо сделать pip install pyTelegramBotAPI
import threading, random, time, telebot
bot = telebot.TeleBot('276349923:AAGq2JkAib-OwGo-SrW1lHbh4CTPVFmY0ns')
@bot.message_handler(commands=['cr'])
def handle_text(message):
param = str(random.randint(1, 1000))
threadname = str(message.from_user.id) + " " + param
th = threading.Thread(target=inffync, name=threadname, args=[param])
th.start()
@bot.message_handler(commands=['list'])
def handle_text(message):
for i in range(threading.active_count()):
print(threading.enumerate()[i])
@bot.message_handler(commands=['kill'])
def handle_text(message):
print("Хочу убивать потоки созданные " + str(message.from_user.id))
def inffync(p):
while True:
print(str(random.randint(1, 1000)) + " " + p)
time.sleep(5)
bot.polling(none_stop=True, interval=0)
если послать ему команду /cr он создаст тред в котором будет бесконечно выполняться функция которая выводит рандомное число.
если послать /list в консоле появится список запущенных потоков.
вот теперь как оформить убийство одного из них по команде /kill?