PsycoでPythonプログラムの実行を高速化


Pythonや他のスクリプト言語は、C言語などのコンパイル言語と性能がかなり劣っています.例えば、C言語とPython言語で作成されたフィボナッチ数列計算プログラムが2つあります.
C言語:

  
  
  
  
  1. int fib(int n){  
  2.    if (n < 2)  
  3.      return n;  
  4.    else 
  5.      return fib(n - 1) + fib(n - 2);  
  6. }  
  7.  
  8. int main() {  
  9.     fib(40);  
  10.     return 0;  

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 

 
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