在Django中使用Cython,有意义吗?

38 投票
6 回答
18174 浏览
提问于 2025-04-16 03:07

有没有办法用Cython来提高一个在Django上开发的关键任务应用的速度呢?

我最近在网上看到,Cython可以把Python代码变得像C语言那样快。这在Django上也能做到吗?

6 个回答

12

从概念上来说,你想要的东西是可以实现的,但你现在的方向不太对。

你应该关注一下PyPy,这对Django和Python社区来说是个非常有前途的技术。根据测试,Django在PyPy上的运行速度比普通Python快12.5倍。虽然前端的静态资源对用户体验的影响很大(就像S.Lott上面提到的那样),但这并不改变服务器端速度提升的重要性。Facebook就是因为这个原因发明了HipHop PHP,因为PHP的速度实在跟不上需求。再说说我们身边的例子,像Meebo这样一个用Python驱动的网站,每个月在服务器基础设施上的花费就高达数万美元。你能想象用PyPy能节省多少服务器成本吗?真是太棒了!

想了解更多测试结果,可以看看这个链接:http://speed.pypy.org/

25

嗯,是的,但大多数网页应用做的事情其实并不会因为这种改变而有明显的好处,除非你有确凿的证据证明这样做会有效。简单来说,就是先分析两次,再优化一次。

35

用Cython来优化一个在Django上开发的关键任务应用的速度,有可能吗?

这有点不太可能。

大多数网页应用的响应时间主要是因为需要单独下载的非HTML元素。一般来说,每个HTML页面大约有8个静态文件。(比如.CSS、.JS、图片等等)

因为这些静态内容并不是来自Django,所以你大部分的网页应用时间都是在Apache(或者Nginx,或者其他不在Django里的服务器软件)上消耗的。

如果只看生成HTML的时间,你会发现大部分时间都在等数据库(即使是使用内存中的SQLite,数据库的处理时间也往往占据了大部分)。

当你把Apache和数据库的速度提升到极致后,才可以考虑Python部分的优化。

总之,不要浪费时间去让Django和Python变得更快。

撰写回答