[Python-ideas] Unified style of cache management API

Ma Lin malincns at 163.com
Wed Mar 27 09:46:44 EDT 2019


re module [1] and struct module [2] have module-level cache for compiled 
stuffs.
Other third-party modules may also need cache for something.

Do we need an unified cache management API like this?
I suppose it's not mandatory, but welcome each module to use this API.

   module.cache_get_capacity()     # return current capacity
   module.cache_set_capacity(100)  # set capacity
   module.cache_clear()            # clear cache

Moreover, add these API to sys module, then the users can manage system 
wide cache easily:

   sys.cache_register(f)  # register a .cache_clear() function
   sys.cache_clear()      # call all registered .cache_clear()

[1] re module
policy: FIFO
capacity: 512 (default), changeable
implementation: Python
https://github.com/python/cpython/blob/v3.8.0a3/Lib/re.py#L268-L295

[2] struct module
clear entire cache when full
capacity: 100, unchangeable
implementation: C
https://github.com/python/cpython/blob/v3.8.0a3/Modules/_struct.c#L2071-L2126




More information about the Python-ideas mailing list