<p>这是一个新的<code>regex</code>模块的开发人员在3.3中关于缓存的一段话,这是将新模块与当前的<code>re</code>模块分开的特性列表的一部分。在</p>
<blockquote>
<p>7) Modify the re compiled expression cache to better handle the
thrashing condition. Currently, when regular expressions are compiled,
the result is cached so that if the same expression is compiled again,
it is retrieved from the cache and no extra work has to be done. This
cache supports up to 100 entries. Once the 100th entry is reached, the
cache is cleared and a new compile must occur. The danger, all be it
rare, is that one may compile the 100th expression only to find that one
recompiles it and has to do the same work all over again when it may
have been done 3 expressions ago. By modifying this logic slightly, it
is possible to establish an arbitrary counter that gives a time stamp to
each compiled entry and instead of clearing the entire cache when it
reaches capacity, only eliminate the oldest half of the cache, keeping
the half that is more recent. This should limit the possibility of
thrashing to cases where a very large number of Regular Expressions are
continually recompiled. In addition to this, I will update the limit to
256 entries, meaning that the 128 most recent are kept.</p>
</blockquote>
<p><a href="http://bugs.python.org/issue2636" rel="noreferrer">http://bugs.python.org/issue2636</a></p>
<p>这似乎表明,解释当前缓存行为的更可能是开发人员的懒惰或“对可读性的强调”。在</p>