Python関数バッファー

Pythonキャッシュ###

#1 周囲##

Python3.7.3 # Python>=3.2

#2 開始##

#2.1 キャッシュとは###

通常、redisはキャッシングに使用されると聞きますが、redisは結果データを格納するためにキャッシュを変更します。Pythonのバージョン3.2から、非常に洗練されたキャッシングマシンが導入されました

from functools import lru_cache

lru_cacheは、プログラム実行の効率を向上させることができ、特に時間のかかる関数に適しています。キャッシュの効果を実現するには、必要な関数、特に一部の再帰関数にデコレータを追加するだけで済みます

# 2.2 テスト(フィボナッチシーケンス)###

  1. キャッシュは使用されていません
def fab(n):if n <=2:return n

 returnfab(n-1)+fab(n-2)print(datetime.datetime.now()) # 2019-05-2414:21:43fab(40)print(datetime.datetime.now()) # 2019-05-2414:22:20

**キャッシュを使用しない場合、fab(40)の実行時間は約37秒かかりますか?? **

  1. プラスキャッシュ
from functools import lru_cache
import datetime

@ lru_cache(None)
def fab(n):if n <=2:return n

 returnfab(n-1)+fab(n-2)print(datetime.datetime.now()) # 2019-05-2414:24:00.229715fab(40)print(datetime.datetime.now()) # 2019-05-2414:24:00.229823

**キャッシュが追加されると、fab(40)?? **の実行に1秒もかかりません。

#2.3 なんでこんな感じ###

少しテストしてください

  1. キャッシュは使用されていません
def fab(n):print(n)return None

fab(10)fab(10)fab(10)


  1. キャッシュを使用する
from functools import lru_cache

@ lru_cache(None)
def fab(n):print(n)return None

fab(10)fab(10)fab(10)fab(9)fab(9)


**結果から、fab(10)が2回呼び出されたとき、関数本体は実際には実行されませんが、キャッシュされた結果が直接返されることがわかります。 ****

#2.4 lur_cacheパラメータ/メソッド###

**functoolsモジュールのlur_cacheデコレータを使用すると、この関数の最大最大呼び出し結果をキャッシュできるため、特に時間のかかる関数に適したプログラム実行の効率が向上します。パラメータmaxsizeは、キャッシュの最大数です。Noneの場合、制限はありません。2nに設定すると、パフォーマンスが最高になります。typed= Trueの場合(functools32にそのようなパラメータがないことに注意してください)、異なるパラメータタイプの呼び出しが個別にキャッシュされます。たとえば、f(3)およびf(3.0)。 **** lru_cacheで装飾された関数には、cache_clearとcache_infoの2つのメソッドがあり、それぞれキャッシュをクリアしてキャッシュ情報を表示するために使用されます。 ****

Recommended Posts

Python関数バッファー
Python enumerate()関数
Pythonカスタム関数の基本
Pythonの結合関数
Python関数の基礎学習
Pythonデータ分析-関数の適用
Python3組み込み関数table.md
Pythonプリントプリントタイマー機能
Pythonは関数メソッドを定義します
Pythonの上位関数の使用法の概要!
Pythonはオンライン翻訳機能を実現します
Pythonトルネードアップロードファイル機能
PythonがFTP機能を実装する方法
Pythonは画像スティッチング機能を実装しています
Pythonの上位関数の使用法の概要!
Pythontelnetログイン関数の実装コード
Python |再帰を使用して解決する関数
Pythonがメール機能を実装する方法
Pythonが関数のオーバーロードをサポートしないのはなぜですか?
pythonに関数のオーバーロードはありますか
Python enumerate()関数
Python関数バッファー
Pythonの3日目の1行関数の学習
Python関数の定義とパラメーターの説明
PythonATM関数の実装コード例
PythonはAIフェイスチェンジ機能を実装しています
Pythonは画像認識カー機能を実現
Pythonはftpファイル転送機能を実装しています
Pythonはudp送信画像機能を実現します
Pythonがタイマー機能を実装する方法
Pythonマルチスレッド
Python FAQ
Python3辞書
Python3モジュール
python(you-get)
Python文字列
Pythonの基本
Python記述子
Pythonの基本2
Python exec
Pythonノート
pythonでid関数を実行する方法
Python3タプル
CentOS + Python3.6 +
Python Advanced(1)
Pythonデコレータ
Python IO
pythonのid関数は何ですか
Pythonツールチェーン
Pythonの匿名関数とは何ですか
Pythonマルチタスク-日常
Pythonの概要
pythonの紹介
Pythonアナリティック
Pythonの基本
pythonはどのように独自の関数を呼び出すのですか
Pythonの基本3
python3はマスク描画の機能を実現します
Pythonマルチタスクスレッド
Python関数
python sys.stdout
python演算子