@memoize
次のように関数で使用できるデコレータを作成する方法を探しています。
@memoize
my_function(a, b, c):
# Do stuff
# result may not always be the same for fixed (a,b,c)
return result
次に、もしそうなら:
result1 = my_function(a=1,b=2,c=3)
# The function f runs (slow). We cache the result for later
result2 = my_function(a=1, b=2, c=3)
# The decorator reads the cache and returns the result (fast)
ここで、キャッシュの更新を強制したいとします。
result3 = my_function(a=1, b=2, c=3, force_update=True)
# The function runs *again* for values a, b, and c.
result4 = my_function(a=1, b=2, c=3)
# We read the cache
上記の最後には常に がありますがresult4 = result3
、必ずしもresult4 = result
であるとは限りません。そのため、同じ入力パラメータに対してキャッシュの更新を強制するオプションが必要です。
どうすればこの問題にアプローチできますか?
注意事項joblib
私の知る限り、再実行を強制する をjoblib
サポートしていますが、キャッシュは更新しません。.call
使用に関するフォローアップklepto
:
デフォルトで結果を特定の場所にキャッシュする方法はありますかklepto
(@Wally の回答を参照)。(例/some/path/
) この場所を複数の機能で共有しますか? 例えば、私は言いたい
cache_path = "/some/path/"
次に@memoize
、同じパスの下の特定のモジュール内のいくつかの関数。