From: Guido van Rossum Date: Fri, 27 Dec 1996 15:26:15 +0000 (+0000) Subject: Crude but effective hack to clear the parser cache every so often. X-Git-Tag: v1.5a1~645 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=671dc20efccf7fb75fa4aa7ac2d94593c58c4abf;p=python Crude but effective hack to clear the parser cache every so often. (Fred Drake.) --- diff --git a/Lib/urlparse.py b/Lib/urlparse.py index 571ef0eb0c..91775333c7 100644 --- a/Lib/urlparse.py +++ b/Lib/urlparse.py @@ -19,9 +19,11 @@ uses_fragment = ['ftp', 'hdl', 'http', 'gopher', 'news', 'nntp', 'wais', # Characters valid in scheme names scheme_chars = string.letters + string.digits + '+-.' +MAX_CACHE_SIZE = 2000 _parse_cache = {} def clear_cache(): + """Clear the parse cache.""" global _parse_cache _parse_cache = {} @@ -35,6 +37,8 @@ def urlparse(url, scheme = '', allow_framents = 1): key = url, scheme, allow_framents if _parse_cache.has_key(key): return _parse_cache[key] + if len(_parse_cache) >= MAX_CACHE_SIZE: # avoid runaway growth + clear_cache() netloc = path = params = query = fragment = '' i = string.find(url, ':') if i > 0: