gpt4 book ai didi

python - 如何应用最大缓存大小来内存?

转载 作者:行者123 更新时间:2023-11-28 20:26:07 24 4
gpt4 key购买 nike

我在类里面使用了这个 memoize 装饰器,它非常有效。现在我准备用一些速度来控制内存消耗。理想情况下,我可以设置一个最大值; (例如:2GB)但我想我可以反复试验并确定缓存中的最大对象数。

有人知道一些现成的代码可以做到这一点吗?我想我会扔掉缓存中最旧的以添加最新的。

或者是否有更明智的方法来做到这一点?

这是我目前使用的例程:

def memoize(obj):
"""A decorator to cache advice objects using the advice key"""
cache = obj.cache = {}

@functools.wraps(obj)
def memoizer(*args, **kwargs):
key = args[0]
if key not in cache:
cache[key] = obj(*args, **kwargs)
return cache[key]

return memoizer

将最大值作为参数提供给装饰器似乎是明智的,例如:

@memoize(max=2000)
class Foo(object):
...

最佳答案

如果你使用的是 Python 3.2,标准库中已经有一个很好的缓存装饰器:

import functools

@functools.lru_cache(maxsize=1000)
def fun(...):

否则,我只看一下 lru_cache 的实现.它是一个很好的纯 Python 通用内存器,具有 LRU 语义(类似于您正在使用的 FIFO 语义,但更复杂一些)以获得更好的缓存性能。

关于python - 如何应用最大缓存大小来内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505503/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com