Компиляция проекта django с Pyrex - PullRequest
2 голосов
/ 14 декабря 2011

Мне было интересно, может ли кто-нибудь скомпилировать проекты на основе Django (например, в библиотеки совместно используемых объектов) с pyrex (или чем-то подобным) и при этом поддерживать гибкость, используя обычные проекты Django с python.

Мы должны иметь возможность использовать проект с Apache, чтобы он не мог быть скомпилирован в отдельный двоичный файл. Я думаю, что он будет скомпилирован в библиотеки, и эти библиотеки будут представлены интерпретатору, поэтому он должен вести себя как текущее состояние проекта с python. Желательно без написания большого количества кода C:)

Заранее спасибо.

1 Ответ

7 голосов
/ 14 декабря 2011

Pyrex и его преемник - cython - не полностью совместимы с Python - это скорее другой язык, хотя и основанный на Python.

Django - очень сложный проект, и для его выполнения потребуется строгое соблюдение Python - я сомневаюсь, что без нескольких месяцев работы можно было бы заставить Django работать непосредственно в Cython или Pyrex - хотя можно использовать профилировщик для устранения определенных узких мест в собственный код с гораздо меньшими усилиями (заменяя отдельные модули django в ядре на модули, оптимизированные с помощью Cython)

Более того, оптимизация с помощью Pyrex / Cython не настолько «бесплатна» - можно добиться ускорения примерно на 30%, запустив простой, интенсивный по численности код в Cython без каких-либо изменений в коде - но для большего увеличения скорости код необходимо настроить вручную, чтобы некоторые переменные были статически типизированы.

С другой стороны, вы можете попробовать запустить Django с Pypy - здесь есть несколько подсказок: http://reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html

Pypy - экстремально совместимый интерпретатор Python, и ядро ​​Django, как известно, работает с ним. Он использует подход перевода Just In Time, который делает его в несколько раз быстрее, чем эталонная реализация Python (CPython) для большинства рабочих нагрузок.

...