【发布时间】:2011-02-12 14:07:09
【问题描述】:
我有一个具有确定性结果的 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,除了不是(或除了)传递给不变函数的参数之外,我想说明一个本身会发生变化的函数。
【问题讨论】:
-
如何修改方法?你想在程序运行中保持散列,还是在一次运行中但在某些模块重新加载时保持散列?
-
我会在脚本文件中使用该方法;我可能会不时手动修改它。该应用程序是该函数将生成“问题数据”以在某些模拟代码中运行。我会不时改变问题。
-
为什么不直接使用doc来检查函数的变化呢?每次修改功能时只需更改它。它既简单又鼓励(或者更确切地说,迫使)您跟踪您的更改。至于实际的记忆,Mike Graham 为您提供了完美的解决方案。