标题或多或少说明了一切:
我有一个函数,它在两个参数中接受对称输入,例如
def f(a1, a2):
return heavy_stuff(abs(a1 - a2))
现在,我想介绍一些缓存方法。做这样的事情是否正确/pythonic/相当有效:
cache = {}
def g(a1, a2):
fs =frozenset((tuple(a1), tuple(a2)))
if fs not in cache:
cache[fs] = f(a1, a2)
return cache[fs]
或者会有更好的方法吗?
编辑: a1 和 a2 可能是 numpy 数组的行;这就是为什么我将它们分别包装在一个元组中。