「関数をキャッシュしてPythonをより速くする:メモ化」

「メモ化:関数をキャッシュしてPythonをさらに高速化する方法」

PYTHON PROGRAMMING(パイソンプログラミング)

この記事では、Python標準ライブラリを使用したメモ化について説明しています。functools.lru_cacheデコレータを使用すると、これが非常に簡単になります!

Pythonに関数が返した結果を記憶させ、再利用するように依頼することができます。写真:Kelly Sikkema氏提供、Unsplashから

Pythonが遅いことは皆さんもご存知ですね:

Pythonの速度:それほど悪くありません!

Pythonはいつも遅いとよく聞きますが、その通りでしょうか?

VoAGI.com

Pythonで最も時間がかかるのは、高価な処理を行う関数やクラスメソッドを呼び出すことです。もし同じ引数でその関数を2回実行する必要がある場合、同じ出力にもかかわらず、2倍の時間が必要になります。この出力をただ記憶して再利用することは可能でしょうか?

はい、可能です!それが「メモ化(memoization)」と呼ばれるもので、プログラミングの中で一般的な用語です。ご自分でメモ化のテクニックを実装することもできますが、真実は、そうする必要はありません。Pythonでは強力なメモ化ツールを標準ライブラリで提供しており、そのツールが「functools.lru_cache」デコレータです。

メモ化はしばしば非常に効率的ですが、Pythonの教科書ではしばしば省略されています。プロファイリングやメモリの節約について説明している教科書でもそうです。Pythonでメモ化に言及している書籍には、Julien Danjouによる「Serious Python」、Luciano Ramalhoによる「Fluent Python, 2nd ed.」、Steven F. Lottによる「Functional Python Programming, 3rd ed.」が含まれています。

この記事では、2つのことを示しています:Python標準ライブラリを使用したメモ化の使用方法(すなわち、「functools.lru_cache」の使用方法)、およびこのテクニックの強力さです。しかし、全てがうまくいくわけではありません。そのため、使用する際に遭遇する可能性のある問題も話し合います。

functoolsモジュールを使用したキャッシング

functools.lru_cache

Pythonではさまざまなメモ化ツールが提供されていますが、今日はPython標準ライブラリの一部であるfunctools.lru_cacheについて話しています。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more