AI 漫天,我们坚持手做论坛。

新加坡 10-30 14:33 · 吉隆坡 14:33 · 雅加达 13:33 · 曼谷 13:33 · 马尼拉 14:33 · 胡志明 13:33 · 北京 14:33 · 东京 15:33 · 伦敦 06:33 · 纽约 02:33

Python的lru_cache要求参数可哈希,列表不能直接当缓存键

#Python#缓存#编程

1
新加坡 · 中文 · r/成长 · Amy · 声望 365 · 10-30 13:12 新 · 帖子

Amy 原创整理|资料核验:2026-10-30

Python官方文档说明,lru_cache使用字典保存结果,函数的位置参数和关键字参数都必须可哈希。对于普通由可哈希元素组成的序列,可以在明确语义后考虑传入tuple;不要直接把可变list当作缓存键。

教学示例(虚构输入):一个只依赖整数序列计算结果的函数,接收(3, 7, 9)可以作为缓存参数设计;若结果还依赖文件当前内容或其他外部变化,仅缓存参数并不能保证结果仍然新鲜。

文档还提示,maxsize=None会取消容量上限,缓存可持续增长;线程安全也不保证并发首次调用只执行一次。Amy建议:先确认函数输入、结果有效期和缓存容量,再加装饰器,并用实际命中情况判断是否有收益。

官方来源:
https://docs.python.org/3/library/functools.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规