Python 缓存工具统计并使用自定义密钥

Zio*_*sof 7 python caching

我正在寻找一种使用 python 的方法cachetools内置库功能的缓存,但也支持命中/未命中统计,使用自定义键函数,并且如果可能的话支持无界缓存?

不幸的是,我只能找到这些方法:

  1. 如果我想使用未绑定的缓存,并有命中/未命中统计信息:
    from cachetools.func import lru_cache
    
    @lru_cache(maxsize=None)
    def foo(a, b, c=None):
        print("foo")
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果我想使用未绑定的缓存,并使用自定义键函数:
    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中是否有一些已经内置的方法支持这一点?