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
  • 相关阅读:
    Python 写一个俄罗斯方块游戏
    您能解决这3个(看似)简单的Python问题吗?
    Python selenium爬虫实现定时任务过程解析
    Python-Django-Ajax进阶2
    Python-Django-Ajax进阶
    Python 数据-入门到进阶开发之路
    Python-Numpy数组计算
    Python-Django-Ajax
    Python-web应用 +HTTP协议 +web框架
    Python-socketserver实现并发- 源码分析
  • 原文地址:https://www.cnblogs.com/shihao/p/2850842.html
Copyright © 2011-2022 走看看