gpt4 book ai didi

python - Python 中的内存感知 LRU 缓存?

转载 作者:太空狗 更新时间:2023-10-29 21:46:25 24 4
gpt4 key购买 nike

我正在使用 Python 3 的内置 functools.lru_cache 装饰器来内存一些昂贵的函数。我想在不使用太多内存的情况下记住尽可能多的调用,因为缓存太多值会导致抖动。

是否有在 Python 中完成此操作的首选技术或库?

例如,this question带我去 system memory aware LRU caching 的 Go 库.与 Python 类似的东西将是理想的。


注意:我不能只估计每个值使用的内存并相应地设置 maxsize,因为多个进程将并行调用装饰函数;解决方案需要实际动态检查有多少内存可用。

最佳答案

我最终修改了内置的 lru_cache 以使用 psutil

修改后的装饰器带有一个额外的可选参数 use_memory_up_to。如果设置,如果可用内存少于 use_memory_up_to 字节(根据 psutil.virtual_memory().available),缓存将被视为已满。例如:

from .lru_cache import lru_cache

GB = 1024**3

@lru_cache(use_memory_up_to=(1 * GB))
def expensive_func(args):
...

注意:设置use_memory_up_to会导致maxsize无效。

这是代码:lru_cache.py

关于python - Python 中的内存感知 LRU 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23477284/

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