Python加速器

时间:2010-09-01 14:22:42

标签: php python accelerator

我打算使用Python开发Web应用程序。任何人对python的加速器有什么想法? (如eAccelerator或apc for php)如果没有,有没有办法缓存预编译的python字节码? 关于python和php之间的性能比较的任何想法(假设db / network延迟相同)

提前致谢。

4 个答案:

答案 0 :(得分:8)

这是一个诀窍。

它被称为mod_wsgi

它的本质就是这样。

  1. 对于“静态”内容(.css,.js,图像等),将它们放在一个目录中,这样它们就可以由Apache提供服务,而不会让你的Python程序知道它们已被发送。

    < / LI>
  2. 对于“动态”内容(主HTML页面本身),您使用mod_wsgi来分叉在Apache之外运行的“后端”进程。

  3. 这比PHP更快,因为现在有几件事情正在进行中。 Apache已将请求发送到后端进程,然后继续处理下一个请求,而后端仍在运行第一个请求。

    此外,当您发送HTML页面时,后续请求由Apache处理,而您的Python程序不知道或关心正在发生的事情。这导致了巨大的加速。与Python的速度无关。一切与整体架构有关。

答案 1 :(得分:5)

只要您在“主脚本”(您使用python直接调用的那个,并获得__name__ __main__)中执行大量工作,您就不必担心了关于“缓存预编译的python字节码”:当你import foofoo.py被保存到磁盘(同一目录)和foo.pyc时,只要该目录是你可写的,那么已经很便宜的字节码编译发生了一次和“永远之后”Python将在foo.pyc的每个新进程中直接加载import foo - 在一个进程中,每个{ {1}}除了第一个只是快速查找内存中的字典(import foo字典)。 Python中的核心性能理念:确保每个位的实体代码在模块中的sys.module语句中发生 - 在模块顶层有任何内容,在主脚本中,或者尤其是在defexec语句/表达式中! - )。

我没有针对PHP和Python的基准测试,但我注意到Python在每个新版本中都会非常明显地进行优化,所以如果你想看到,请确保你比较一个最近的版本(理想的2.7,至少2.6) “迷人的Python”。如果你还没有找到足够快的话,eval(一种设计用于直接编译成C语言的Python方言,从而进入机器代码,有一些限制)是今天选择性优化那些分析节目的模块的最简单方法你需要它。

答案 2 :(得分:3)

其他人提到了Python字节码文件,但这在很大程度上是无关紧要的。这是因为Python的托管机制(CGI除外)使Python Web应用程序在请求之间保持在内存中。这与PHP有所不同,它有效地抛弃了请求之间的应用程序。因此,Python不需要加速器,因为Python Web托管机制的工作方式可以避免PHP带来的问题。

答案 3 :(得分:2)

编译的python字节码在我看到的每个环境中自动缓存在.pyc文件中。据我所知,还有其他事情要做。

如果您想直接生成这些文件,可以使用:http://docs.python.org/library/py_compile.html