使用Pyrex编译django项目

时间:2011-12-14 13:11:56

标签: python django cython pyrex

我想知道是否有人能够使用pyrex(或任何类似的东西)编译基于Django的项目(例如共享对象库),并且仍然使用python使用普通的Django项目保持灵活性。

我们必须能够将该项目与apache一起使用,因此无法将其编译为独立的二进制文件。我想到它的方式是它将被编译成libs,这些libs将暴露给解释器,所以它应该像python项目的当前状态。最好不要写很多C代码:))

提前致谢。

1 个答案:

答案 0 :(得分:7)

Pyrex及其成功者 - cython - 并不完全兼容python - 它们是另一种语言,虽然基于Python。

Django是一个非常复杂的项目,需要严格的Python合规才能运行 - 我怀疑如果没有几个月的工作就可以让Django直接在cython或Pyrex中工作 - 尽管可以使用分析器来改变特定的瓶颈使用更少的工作量(通过将核心中的单个django模块替换为使用Cython优化的模块)进入本机代码

此外,使用Pyrex / Cython进行优化并不是“免费” - 通过在Cython中运行简单的数字密集型代码可以获得大约30%的加速,而不需要对代码进行任何更改 - 但为了提高速度,代码必须手动调整,以便对某些变量进行静态类型化。

另一方面,您可以尝试使用Pypy运行Django - 这里有一些提示: http://reinout.vanrees.org/weblog/2011/06/06/django-and-pypy.html

Pypy是一个极其符合要求的Python解释器,已知Django核心可以使用它。它确实使用了即时翻译方法,使其比大多数工作负载的Python(CPython)参考实现快几倍。