0

Я пытаюсь сделать простое приложение на Tornado, а Tornado - это веб-сервер event driven, а поскольку он находится на Python, то я попытаюсь использовать Multiprocessing, но в чем?Что я могу распараллелить в управляемом событиями веб-приложении python?

Хеширование пароля - это линейная операция нет? если у меня есть пароль 1000 раз, то для каждой операции n нужна операция n-1?

Что касается обработки изображений, если они используются в формах, то он должен ждать, пока клиент не проверит его форму нет?

Единственный пример, который я могу получить от многопроцессорности, - это 3D-рендеринг, больше вы получаете процессы, больше вы получаете время.

ответ

2

Зачем вам нужна многопроцессорная обработка и добавление черты сложности в вашу цель, пока нет реальной необходимости? Если вы хотите использовать несколько ядер, просто поднимите несколько экземпляров Tornado за Nginx. Для тривиальных задач, таких как хеш-вычисления, рендеринг шаблонов и т. Д. Накладные расходы более чем приемлемы. Если у вас более сложные сценарии, делегируйте свою работу в очередь, например, сельдерей.

Хеширование - это операция O (n), но это не означает, что вам нужны предыдущие вычисления для вычисления хэша каждый раз. Кроме того, 3D-рендеринг не происходит на сервере :)

+0

3D был всего лишь примером, потому что я родом из CGWorld, а веб-приложение - это новый материал: p , так что тогда управляемое событие не требует многопроцессорности/потоковой обработки? –

+1

Короткий ответ: да, не смешивайте эти разные миры. Держите серверы, управляемые событиями, выполнять то, что они должны делать (в основном, операции с асинхронным вводом-выводом) и использовать очередь для выполнения более сложных задач. – hymloth

+0

можете ли вы отредактировать ответ с примером очереди? –