我正在寻找一种使用 python 的方法cachetools内置库功能的缓存,但也支持命中/未命中统计,使用自定义键函数,并且如果可能的话支持无界缓存?
不幸的是,我只能找到这些方法:
from cachetools.func import lru_cache
@lru_cache(maxsize=None)
def foo(a, b, c=None):
print("foo")
Run Code Online (Sandbox Code Playgroud)
from cachetools import cached
@cached(
cache={},
key=lambda a, b, c=None: "a" if c is None else "b"
)
def foo(a, b, c=None):
print("foo")
Run Code Online (Sandbox Code Playgroud)
或者,使用这个“黑客”:
from cachetools import cached, LRUCache
@cached(
cache=LRUCache(maxsize=1, getsizeof=lambda _: 0), # will always pass the test of maxsize check
key=lambda a, b, c=None: "a" if c is None else "b"
)
def foo(a, b, c=None):
print("foo")
Run Code Online (Sandbox Code Playgroud)
如果我想使用命中/未命中统计数据和自定义按键功能,我该怎么做?
我知道如何自己实现一个,我只是想知道python的cachetools/functools中是否有一些已经内置的方法支持这一点?