Возможен ли параллелизм в торнадо?
==================================

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

Есть ли способ обрабатывать несколько запросов параллельно в торнадо для нормального (не IO) выполнения. Я не могу разветвлять несколько процессов, так как мне нужно общее пространство памяти для запросов.

Если это невозможно, пожалуйста, предложите мне другие серверы Python, которые могут обрабатывать параллельные запросы и также поддерживают wsgi.

ыми запросами, которые связаны с вычислениями, и вы хотите сделать это в Python, то вам нужен многопроцессорный сервер, а не многопоточный. CPython имеет глобальную блокировку интерпретатора (GIL), которая предотвращает одновременное выполнение байт-кода python более чем одним потоком.

Большинство веб-приложений выполняют очень мало вычислений и вместо этого ожидают ввода-вывода либо из базы данных, либо с диска, либо из служб на других серверах. Убедитесь, что вам нужно обработать запросы, связанные с вычислениями, прежде чем отбрасывать Tornado.



 как долго эти вычислительные потоки будут работать. Если они работают недолго, и скорость их обработки, по крайней мере, соответствует скорости, с которой они прибывают, то с Торнадо все будет в порядке. Он действительно однопоточный, но очень хорошо масштабируется.

Если ваши связанные с вычислениями запросы выполняются долго, то использование многопоточного сервера не обязательно поможет, поскольку, как уже указывал Нед Батчелдер, GIL будет узким местом.

Если вы можете ослабить ограничение на использование одного и того же пространства памяти для всех запросов, вы можете рассмотреть возможность запуска Tornado с[PyZMQ](https://zeromq.github.com/pyzmq/), поскольку он обеспечивает способ запуска нескольких серверных торнадо, запущенных одним экземпляром торнадо. Это позволяет вам продолжать использовать Торнадо для всего решения. Смотрите PyZMQ[web.zmqweb](https://github.com/ellisonbg/zmqweb) Модуль для получения дополнительной информации.