У меня есть функция python, которая имеет детерминированный результат. Требуется много времени для запуска и генерации большого результата:
def time_consuming_function():
# lots_of_computing_time to come up with the_result
return the_result
Я время от времени изменяю time_consuming_function
, но я бы хотел, чтобы он не запускался снова, пока он не изменился. [time_consuming_function
зависит только от функций, которые неизменны для рассмотренных здесь целей; то есть он может иметь функции из библиотек Python, но не из других частей моего кода, которые я бы изменил.] Решение, которое мне предлагает, - это кэширование вывода, а также кэширование некоторой "хэш" функции. Если хеш изменится, функция будет изменена, и нам придется повторно генерировать вывод.
Это возможно или смешно?
Обновлено: на основе ответов, похоже, что я хочу сделать "memoize" time_consuming_function
, за исключением вместо (или в дополнение) аргументов, передаваемых в инвариантную функцию, Я хочу учитывать функцию, которая сама изменится.