我有一个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库的函数,但不会来自我要更改的其他代码片段。] 我想到的解决方案是缓存输出并且缓存一些函数的“哈希”值。如果哈希值发生变化,则函数已被修改,我们必须重新生成输出。
这种做法可行还是荒谬?
更新:根据答案,看起来我想做的是“记忆化”time_consuming_function
,除了(或者附加)传递给不变函数的参数之外,我还想考虑一个函数本身也会发生变化。