Skip to content

Imperative Caching

⚡ . Imperative Caching: with cached_run

ライブラリの関数や、ソースコードを変更できない関数を「その場限り」でキャッシュしたい場合に最適です。

Scenario: シミュレーションライブラリ simpy の関数を実行したいが、パラメータが同じなら計算をスキップしたい。

import beautyspot as bs
from external_lib import run_simulation  # 変更できない外部関数

spot = bs.Spot("simulation_env")

# コンテキスト内でのみ、run_simulation はキャッシュ機能を持つラッパーになります
# version="v1" を指定することで、将来ロジックが変わった時にキャッシュを無効化できます
with spot.cached_run(run_simulation, version="exp-v1") as cached_sim:

    # 1回目: 実行される (3秒)
    result1 = cached_sim(param_a=10, param_b=20)

    # 2回目: キャッシュから即座に返る (0秒)
    result2 = cached_sim(param_a=10, param_b=20)

print("Done!")