Кажется, что вы столкнулись с одной из слабостей Python, обрабатывая параллелизм. Чувак, это больно! Я поделюсь с вами некоторыми своими мыслями в рамках вашего вопроса, но не раньше, чем отправлю свои самые большие StackOverflow любимые мозоли ... ответьте на ваш вопрос, сказав вам попробовать что-то еще полностью ...
Раздражающий ответ: Кажется, что описываемый вами сценарий использования требует инструмента, который делает параллелизм первоклассным гражданином, поэтому я рекомендую вам изучить использование Golang. Исходя из довольно тяжелого фона Python, я обнаружил, что не так уж сложно найти Голанга. Голанг использует «стандартные процедуры», чтобы легко справляться с проблемами, подобными той, которая у вас есть. Он также имеет кучу других действительно хороших функций, которые вы должны проверить (например, набрав .. о да!). Поначалу немного странно, если вы привыкли к работе с Python Dev, но это довольно просто после того, как вы поймете концепции!
Не раздражает Ответ: Хорошо, если вы прочитали вышеизложенное, я ценю это, позвольте мне изложить несколько идей в рамках вашего вопроса.
- Один из вариантов - использовать библиотеку MultiProcessing, как вы упоминаете. Ваш лучший выбор, вероятно, будет заключаться в создании пула работников. Когда программа работает через цикл while и регистрирует, что команда была дана, она передаст эту команду открытому работнику для выполнения работы.
Таким образом, вы бы создали функцию для вставки в цикл while что-то вроде
Def Dispatch_worker_boi(self, command):
use multiprocessing function to pitch to a worker (see Pool.apply_async)
- Единственная другая идея, которая приходит на ум, - это пакет AsyncIO. Если ваш бот ждет, слушая ответы команд, это может пригодиться. Я буду честен, хотя, у меня гораздо меньше опыта с этим пакетом. Стоит посмотреть!
Заключительные примечания: Еще один метод, указанный Chiragjn, заключается в использовании некоторого типа службы очереди, например сельдерея. Это позволит вам придерживаться Python и иметь гораздо большую масштабируемость, чем чистый подход Python. Честно говоря, если вы имеете дело с большим количеством масштабов, Голанг будет хорошо вам служить.
Надеюсь, что это было несколько полезно, всегда цените обратную связь, если у вас есть!