利用 psyco 让 Python 程序执行更快

Python 和其他的脚本语言在性能上跟一些编译语言(如C语言)比较要差不少,例如这里有两个用 C 和 Python 语言编写的斐波纳契数列计算程序:

C语言:

01int fib(int n){
02   if (n < 2)
03     return n;
04   else
05     return fib(n - 1) + fib(n - 2);
06}
07 
08int main() {
09    fib(40);
10    return 0;
11}
Python语言:​
1def fib(n):
2  if n < 2:
3     return n
4  else:
5     return fib(n - 1) + fib(n - 2)
6fib(40)
下面是执行的时间比较:
1$ time ./fib
23.099s
3$ time python fib.py
416.655s

正如我们说预想的,C 程序比 Python 要快很多,在我们这个例子中要快 5 倍之多。

尽管在 Web 环境中,指令执行的速度并不重要,因为瓶颈是在 I/O 上。但我也同时在其他地方使用 Python ,因此让我们来看看如何优化 Python 程序的执行速度。

首先需要安装 Psyco,在 Linux 下可以这样:

1sudo apt-get install python-psyco
然后修改 Python 脚本来调用 psyco:
1import psyco
2psyco.full()
3 
4def fib(n):
5  if n < 2:
6     return n
7  else:
8     return fib(n - 1) + fib(n - 2)
9fib(40)
再次执行的时间是:
1$ time python fib.py
23.190s

只需要 3 秒钟,使用 psyco 后 Python 的执行速度居然跟 C 语言相差无几。Psyco 通过即时编译代码避免逐行解释执行来提升运行速度的。

现在将我大部分 Python 代码加上下列脚本来利用 Psyco 提升运行速度:

1try:
2    import psyco
3    psyco.full()
4except ImportError:
5    pass # psyco not installed so continue as usual

 

英文原文, OSCHINA翻译(转载请注明出处)

 





posted on 2013-01-08 09:18  DJ IN MUSIC  阅读(203)  评论(0编辑  收藏  举报

导航