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


_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to