kioku-space

備忘録も兼ねて、私が面白い/役立つと思った情報を書いています。

Pythonで有効期限(TTL)付きキャッシュを実装する (3)

今回は、前回までに実装したTTLキャッシュデコレータに対し、
キャッシュのオン・オフを切り替える機能を追加します。

今回追加するキャッシュ切り替え機能の仕様は以下のとおりです:

  1. lru_cacheデコレータが付けられた関数にはuse_cache引数が追加される。
    この引数でキャッシュのオンオフを切り替えられるようになる。
  2. use_cache=False と指定するとキャッシュを無視して実行される。
    計算結果はキャッシュに保存される。
  3. 再度 use_cache=True とすると、キャッシュの内容が利用される。

実装方法は色々と考えられそうですが、今回は以下のように行いました。

Pythonで有効期限(TTL)付きキャッシュを実装する (2)

今回も引き続き、有効期限(TTL)付きキャッシュの実装について解説します。
初めに前回の内容を簡単に振り返りましょう。

  1. lru_cache を使用すると関数にキャッシュ機能を持たせることができました。
  2. 指定間隔で返り値が更新される get_ttl_hash 関数を実装しました。
  3. 以下の方法で関数に有効期限付きキャッシュ機能をもたせることができました。
    1. lru_cache でキャッシュ機能を追加
    2. ダミー引数を追加
    3. ダミー引数に get_ttl_hash の返り値を入力

「この処理を自動で行ってくれるデコレータを実装しよう」というのが今回の目標です。