You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为每个参数值设置独立LRU缓存?Python2实现方案咨询

为每个列名实现独立LRU缓存的Python2方案

由于Python2标准库没有内置lru_cache,首先需要安装兼容的backport包:

pip install functools32

核心思路是为每个col_name单独创建一个带LRU缓存的函数,用字典维护这些函数的映射,确保不同列的缓存互相独立。实现代码如下:

from functools32 import lru_cache

class YourDBHandler(object):
    def __init__(self):
        # 存储列名到对应缓存函数的映射
        self._column_caches = {}

    def _fetch_column_data(self, col_name, time):
        # 这里编写实际从SQL数据库获取列数据的逻辑
        # 示例:
        # cursor.execute("SELECT {} FROM table WHERE time = %s".format(col_name), (time,))
        # return cursor.fetchall()
        pass

    def get_col(self, col_name, time):
        # 检查当前列是否已有对应的缓存函数
        if col_name not in self._column_caches:
            # 为该列创建绑定了列名的缓存函数,缓存仅针对time参数
            @lru_cache(maxsize=128)  # 根据需求调整maxsize的值
            def cached_time_query(t):
                return self._fetch_column_data(col_name, t)
            
            self._column_caches[col_name] = cached_time_query
        
        # 调用对应列的缓存函数获取数据
        return self._column_caches[col_name](time)

说明

  • _column_caches字典负责存储每个列名对应的缓存函数,确保不同列的缓存空间完全独立,避免调用频率不均导致的缓存失效问题。
  • _fetch_column_data抽离了原有的数据库查询逻辑,让缓存函数可以专注于绑定列名并缓存时间参数的查询结果。
  • 每次调用get_col时,若该列还未创建缓存函数,则动态生成并存储,后续同列名的调用直接复用已有缓存。

内容的提问来源于stack exchange,提问作者roulette01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:52:07