python - 具有单个 TTL 的过期字典
问题描述
我需要一本字典,我可以在其中存储带有 TTL(生存时间)的项目,这样一旦时间到了,这些项目就会消失。我为此目的找到了 ExpiringDict 类,但它似乎仅限于对字典中的每个项目具有相同的超时。是否有替代方法可以让我为每个键指定不同的超时值?
解决方案
建立自己很容易。成分:一个正常dict
的存储值;aheapq
存储(expiry, key)
对;aThread
运行循环,检查堆顶部并删除(或标记过期,取决于您的需要),而顶部的过期时间已经过去(不要忘记让它休眠)。当你推到dict
时,同时添加(now + ttl, key)
到heapq
。您可能需要注意一些细节(例如,heapq
如果您从中删除dict
等,则删除内容,尽管这会有点慢,因为您必须搜索堆,然后重新堆化 - 再次,仅当您的用例需要它)但基本思想非常简单。
推荐阅读
- java - 为什么 List.contains(Object) 的行为不同?
- r - 如何在同一个数据帧上做colsum和average
- powerbi - 使用 DAX 生成日期系列
- javascript - 仅在服务器上需要一个包
- java - Intellij IDEA 仅针对所有未提交的更改运行测试
- regex - 在换行符之前匹配字符,不包括空格?
- macos - MacOS - 使用带有launchd的脚本 - 启动,登录,注销,关闭?
- service-worker - Workbox 的服务人员在更改时未更新
- python - AllenNLP 共指分辨率的多 GPU 训练
- reactjs - 事件处理程序中带有 [name] 的 PrevState