Python functools.lru_cache 有 0 个命中

问题描述

我正在处理一段与此类似的代码(实际上要复杂得多,但下面的代码抓住了本质):

...
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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...