在閱讀Python re
模塊上的文檔時,我決定看看re.py
源代碼。Python重新模塊的緩存清除
當我打開一看,我發現這一點:
_cache = {}
_MAXCACHE = 100
def _compile(*key):
cachekey = (type(key[0]),) + key
p = _cache.get(cachekey)
if p is not None:
return p
#...Here I skip some part of irrelevant to the question code...
if len(_cache) >= _MAXCACHE:
_cache.clear()
_cache[cachekey] = p
return p
爲什麼緩存使用_cache.clear()
,當它到達條目_MAXCACHE
清除?
清除緩存完全並從頭開始是常用的方法嗎?
爲什麼剛纔不用最長時間之前兌現的價值被刪除?
有趣的問題。我認爲編寫這段代碼的開發者可能會懶惰,或者「簡單勝於複雜」的想法。 :-) – NPE
我認爲可能有一些科學研究證明這種清除緩存的方法可以達到某個恆定值。 – ovgolovin
查看正在開發的新正則表達式模塊的源代碼可能很有趣:http://bugs.python.org/issue2636。說明中包含術語「智能緩存」,因此可能會在該區域做出一些改進。 –