Как запустить несколько экземпляров моего кода Python? - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь запустить свой код python-telegram-bot несколько раз с разными настройками / опциями. Каков наилучший способ сделать это?

этот код, над которым я работаю, является своего рода вливанием django в python-telegram-bot для использования его феноменального ORM. Я пытаюсь запустить несколько экземпляров своего кода бота с разными токенами. Я прочитал о subprocess и threading и все еще не понимаю, что мне делать? я должен даже написать отдельный скрипт Python и запустить его с желаемыми параметрами / настройками в качестве аргументов (с subprocess.run или os.system)?

Это будет использоваться в веб-сервисе и, как ожидается, будет запускать экземпляры ботов-телеграмм по мере необходимости. так может 100 экземпляров? желательно использовать как минимум процессор и память.

ps: если есть лучшее название для этого вопроса, предложите в комментариях, пожалуйста.

1 Ответ

1 голос
/ 04 мая 2019

Хорошо, если вы ищете максимальную производительность вычислений, вы хотите использовать подпроцессы, потому что глобальная блокировка интерпретатора предотвращает одновременный запуск кода с интенсивным использованием вычислений.(Threading и Async хороши для сценариев с интенсивным вводом-выводом.)

Я предлагаю использовать для этого многопроцессорный модуль - он позволяет вам вызывать подпроцессы с использованием собственных конструкций Python вместо вызова fork / exec или беспокойства о том, какой двоичный файлвыполнить.

Сильное извлечение из документов Python:

from multiprocessing import Process

def bot(token):
    print(token)

if __name__ == '__main__':
    p1 = Process(target=bot, args=('token1',))
    p2 = Process(target=bot, args=('token2',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
...