问题描述
我正在处理一段与此类似的代码(实际上要复杂得多,但下面的代码抓住了本质):
...
from functools import lru_cache
...
@lru_cache()
def toMemoize(flg,key,sig):
with open("/path/to/log","a") as f:
f.write(str(hash(flg)) + " " + str(hash(key)) + " " + str(hash(sig)) + "\n")
...
...
print(toMemoize.cache_info())
最终打印语句的输出为:
CacheInfo(hits=0,misses=13,maxsize=128,currsize=13)
这告诉我该函数被调用了 13 次,但从未使用过缓存值 (hits=0
)。检查/path/to/log
:
2553775797797093876 364576801895165551 8302682858752407938
-4582445906785148513 364576801895165551 8302682858752407938
-4582445906785148513 364576801895165551 8302682858752407938
-4582445906785148513 364576801895165551 8302682858752407938
4000922257120027290 1417233507693056889 6473669797807631889
...
其中每一行都包含 toMemoize
参数的散列,看起来这个函数被多次使用相同的参数调用。那么为什么是hits=0
?任何线索,建议将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)