@azbukait
Изучаю самостоятельно языки

Многопоточность или же цикл в python?

Доброго дня, профессионалы!

Я в питоне новичок, пишу простенького бота для своих нужд и у меня возникла дилемма, как сделать правильно:
а) засунуть почти всё содержимое бота в цикл
б) попытаться решить задачу через потоки

Немного о боте: бот по нажатию 3-4 кнопок проверяет на текущий момент доступность тех или иных узлов, которые перечислены в файле настроек. Что мне хотелось бы: чтобы бот в цикле проверял доступность всех имеющихся в настройках узлов и выдавал проблему единоразово только если статус устройства поменялся.
Ниже структура бота:
Подключение библиотек
Подключение клавиатуры с кнопками /http /ssl /rdp
Функция отправки сообщений всем участникам чата что бот запущен
Функция проверки файлов настроек
Функция проверки списков доступа к чату
# точка №1
Функция проверкп http/https узлов из файла настроек
Функция проверки SSL узлов из файла настроек
Функция  проверки RDP узлов из файла настроек
Функция обработки нажатия кнопки /http
	вызов функции  http/https и вывод в чат статуса доступности узлов
Функция обработки нажатия кнопки /ssl
	вызов функции  ssl и вывод в чат статуса доступности узлов
Функция обработки нажатия кнопки /rdp
	вызов функции  rdp и вывод в чат статуса доступности узлов
Функция проверки состояния всех узлов
	вызов функции  http/https	
	вызов функции  ssl
	вызов функции  rdp
	создание списка недоступных устройств/или изменение статуса и вывод в чат боту

# точка №3

bot.polling()
# точка №2

Так вот, я подумал, что мою хотелку можно реализовать так:
а) если заключить в бесконечный цикл список функций между точкой №1 и №2
б) или в точке №3 создать поток, где вызывать бесконечно функцию "Функция проверки состояния всех узлов"?
Как правильно, а если делать как в пункте "б", то как это лучше реализовать?
  • Вопрос задан
  • 606 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MazAlVlad
Не знаю, как лучше. В python есть потоки, есть процессы. И те и другие управляемы: лочатся, разлочиваются, становятся в очередь. Основное отличие, что потоки переключаются во времени, когда ядро не задействовано: пауза, вывод и не знаю точно ещё что, там какая-то только python понятная, логика переключения. Есть процессы, используют многоядерность и выполняются уже параллельно, не на одном ядре, как потоки. Получается поток, - эмуляция параллельного выполнения, процесс - параллельное выполнение при условии многоядерного процессора.
В некоторых системах мультипроцессинг может не поддерживаться. Пока сам учусь это дело применять.
Основной код тоже является потоком, поэтому, если использовать многопоточность его тоже придётся определить как поток, чтоб им управлять в дальнейшем.
https://webdevblog.ru/vvedenie-v-potoki-v-python/
Ответ написан
Ваш ответ на вопрос

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

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