zoukankan      html  css  js  c++  java
  • 利用 psyco 让 Python 程序执行更快

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

    C语言:

    01 int fib(int n){
    02    if (n < 2)
    03      return n;
    04    else
    05      return fib(n - 1) + fib(n - 2);
    06 }
    07  
    08 int main() {
    09     fib(40);
    10     return 0;
    11 }

    Python语言:

    1 def fib(n):
    2   if n < 2:
    3      return n
    4   else:
    5      return fib(n - 1) + fib(n - 2)
    6 fib(40)

    下面是执行的时间比较:

    1 $ time ./fib
    2 3.099s
    3 $ time python fib.py
    4 16.655s

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

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

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

    1 sudo apt-get install python-psyco

    然后修改 Python 脚本来调用 psyco:

    1 import psyco
    2 psyco.full()
    3  
    4 def fib(n):
    5   if n < 2:
    6      return n
    7   else:
    8      return fib(n - 1) + fib(n - 2)
    9 fib(40)

    再次执行的时间是:

    1 $ time python fib.py
    2 3.190s

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

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

    1 try:
    2     import psyco
    3     psyco.full()
    4 except ImportError:
    5     pass # psyco not installed so continue as usual
  • 相关阅读:
    wget(转)
    852. Peak Index in a Mountain Array
    617. Merge Two Binary Trees
    814. Binary Tree Pruning
    657. Judge Route Circle
    861. Score After Flipping Matrix
    832. Flipping an Image
    461. Hamming Distance
    654. Maximum Binary Tree
    804. Unique Morse Code Words
  • 原文地址:https://www.cnblogs.com/shihao/p/2850842.html
Copyright © 2011-2022 走看看