2015-05-09 4 views
2

У меня есть скрипт python. Скажем http://domain.com/hello.py, который печатает только «Hello, World!».Могу ли я предварительно скомпилировать скрипт python?

Можно ли предварительно скомпилировать этот файл Python?

Я получаю около 300 запросов в секунду, а накладные расходы на компиляцию - это путь к высокому. В Java сервер может справиться с этим легко, но для расчетов Python работает намного проще.

+2

Python компилирует '.py' файлы в' .pyc' при импорте, то есть это делается только один раз. Что заставляет вас думать, что «накладные расходы на компиляцию» замедляют работу вашего приложения? – univerio

+0

@univerio, я ничего не импортирую, у меня просто есть одна строка «print» hello world! » Я попытался проверить нагрузку с помощью Jmeter, и он мог обрабатывать только около 2000 запросов в минуту. Мой Java-сервлет, который выполняет вычисления db-запросов и т. Д., Может обрабатывать около 70 тыс. В минуту. Что еще может быть причиной этого? – user3605780

+2

это скорее артефакт, который вы пытаетесь обслуживать файлы python, как обычно cgi .... попробуйте как минимум fcgi ... но на самом деле вы должны использовать nginx + gnuicorn или какое-то кеширование ... apache + mod_wsgi также работа ... проблема с обслуживанием их как нормального cgi (и, возможно, fcgi ... Im not sure) заключается в том, что его необходимо развернуть совершенно новую среду интерпретатора для каждого запроса. –

ответ

5

проблема заключается не в том, что вам нужно «прекомпиляцию» питон, проблема заключается в том, что вы пытаетесь выполнить питона сценариев, используя обычный материал CGI скрипт ...

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

Я хотел бы предложить следующее в порядке появления

1. nginx + gnunicorn 
    2. apache2 + mod-wsgi 
    3. something else 
    4. anything else 
    ... 
n-1. fcgi 
    n. cgi 

Я знаю, что это не будет на самом деле ответ и полностью мнение, основанное

0

Код Python скомпилирован автоматически при первом запуске с помощью интерпретатора CPython (стандартный Python). You can pre-compile it if you want to optimize the first request, но это обычно не нужно. Помимо этого, вам нужно будет преобразовать ваш код Python в Python C/cython Module. Есть some tools, чтобы помочь вам преобразовать код Python в Python Module, если это маршрут, по которому вы хотите отправиться.

Там также модуль Python называется SciPy, который обычно используется для научных вычислений и научных данных приложений, который предоставляет инструмент под названием Weave, который позволяет встраивать C/C++ кода в код Python, позволяющий некоторые производительности критически важные части коды для запуска с использованием скомпилированного кода C/C++.

+4

Я не думаю, что это действительно касается проблемы OP (которая вероятно, неправильно указано в заголовке и OP ...) «precompiling» python - это не фактическое решение, которое поможет OP ... и я не думаю, что вы действительно можете оптимизировать «печатать» мир привет »с любым количеством scipy или numpy –

Смежные вопросы