2

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

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

提前致谢。

4

1 回答 1

7

Pyrex 及其继承者 - cython - 不完全兼容 python - 它们是另一种语言,尽管基于 Python。

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

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

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

Pypy 是一个非常符合标准的 Python 解释器,众所周知,Django 核心可以使用它。它确实使用了即时翻译方法,对于大多数工作负载来说,它比 Python (CPython) 的参考实现快几倍。

于 2011-12-14T14:10:18.177 回答