Декораторы для выборочного кэширования / запоминания

Я ищу способ создания декоратора@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 несколько функций в данном модуле по одному и тому же пути.

Ответы на вопрос(4)

Ваш ответ на вопрос