检查缓存是否过期的算法

4
我的Python脚本进行了一些重计算。为了提高性能,它将计算数据缓存到磁盘上,以便下次运行时不会浪费时间在重新计算相同的数据。但是,在从缓存中提取数据之前,它需要进行一些检查,以确保缓存不过期。这是我卡住的地方。
我的第一个想法是比较缓存的创建时间和Python脚本的修改时间,如果后者较大(即更近),则认为缓存已过期,否则没有。然而,由于Linux内核不存储文件的创建时间,所以我在这个点上卡住了。
类似的情况: 当Python解释器从.py文件创建.pyc文件时,它做了类似的操作 - 如果在创建.pyc文件后修改了.py文件,则创建一个新的.pyc文件,否则不会。它是如何做到的呢?我想知道算法。谢谢。

5
为什么不使用最后修改时间戳呢? - Martijn Pieters
你可能想要查看https://dev59.com/T3VD5IYBdhLWcg3wNY1Z - 然后你可以比较时间戳。不过,如果你的脚本很简单,这可能只适用于你。例如,如果脚本使用的库被升级了,你是否希望重新处理结果? - George
我记得听过一场关于雅虎如何处理这个问题的讲座。稍后我会去找一下幻灯片,希望能有所帮助。 - amit
这里是Blanco等人的文章:在增量索引上缓存搜索引擎结果。发表于SIG-IR2010。如果您觉得有帮助并希望我将其发布为答案,请告诉我。 - amit
@MartijnPieters 您的想法可行。我太傻了!我应该再深入思考一下:P。谢谢 :) 请将其发布为答案,我会很高兴接受它。 - Pushpak Dagade
@amit 感谢你的努力,但我的任务并不那么复杂,所以我会坚持使用Martijn的答案。 - Pushpak Dagade
2个回答

2

只需检查缓存文件的上次修改时间。

更好的做法是,无论如何都要检查这个时间,因为当您更新缓存以存储新的计算值时,您想知道最后一次进行更新是什么时间,而不是第一次进行更新的时间。 :-)


0
您可以拥有一个元数据文件,其中包含所有缓存实体及其创建时间的列表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接