ホームページ >バックエンド開発 >Python チュートリアル >Psyco を使用して Python の実行速度をコンパイル言語と同じレベルまで向上させます

Psyco を使用して Python の実行速度をコンパイル言語と同じレベルまで向上させます

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-16 08:41:151088ブラウズ

この記事の例は、Psyco を使用して Python の実行速度をコンパイル言語と同じレベルまで向上させる方法を説明しています。参考のために皆さんに共有します。具体的な実装方法は以下の通りです。

1. Psyco のインストールは非常に簡単です。1 つはソース コード方法、もう 1 つはバイナリ コード方法です。

ソース コードを使用してインストールする場合は、ソース コード ディレクトリで python setup.py install コマンドを呼び出して psyco サブディレクトリをコンパイルして生成し、サブディレクトリ全体を python site-packages ディレクトリにコピーする必要があります。

バイナリ コードを使用してインストールする場合は、この URL リストの Python と psyco のバージョンの対応表に従って、適切なバイナリ ファイルをダウンロードします。解凍後、psyco ディレクトリ全体をコピーします。このディレクトリに移動するだけです。Python の site-packages ディレクトリに移動します。

2. 使用手順 では、効率を高めるために最適化する必要がある次の 2 つの文をソース ファイルの前に追加します。

コードをコピー コードは次のとおりです:import psyco psyco.full()

さらに、psyco.profile() を使用して大規模なプログラムを適切にプロファイリングし、どの関数がコンパイルに最も価値があるかを判断できます。 psyco.log() 関数は、profile() で取得した情報を記録するために使用され、次回より高速に実行できるようにします。
psyco.bind(myfunc) は、full() よりも細かい制御を実現できる関数 myfunc のコンパイルを指定します。
psyco.proxy(f) は、バイナリ コード
を取得するために f によってコードがコンパイルされる新しい関数を作成します
3. 例:

psyco_test.py ファイルのコードは次のとおりです:

コードをコピー コードは次のとおりです:#!/usr/bin/python # ファイル名:psyco_test.py

数学、timeit、心理をインポート

def TestA():
res、loopcnt = 0.0、100
範囲内の i の場合 (loopcnt):
for j in range(loopcnt):
for k in range(loopcnt):
res = res + math.sin(i + j + k)

if __name__ == '__main__':
テストB = psyco.proxy(テストA)
ta = timeit.Timer("TestA()", "from __main__ import TestA")
tb = timeit.Timer("TestB()", "from __main__ import TestB")
Print ("TestA(): %.2fs" % (ta.timeit(10)))
Print ("TestB(): %.2fs" % (tb.timeit(10)))

実行結果は次のとおりです:

コードをコピー コードは次のとおりです:jobin@jobin-desktop:~/work/python/psyco$ python psyco_test.py テストA(): 4.41秒
テストB(): 1.63秒

psyco で処理した関数の実行速度は約 4 倍速くなり、これは著者の主張と同様です。

この記事が皆さんの Python プログラミング設計に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。