26 lines
593 B
Python
26 lines
593 B
Python
|
from functools import lru_cache
|
||
|
from typing import TypeVar, Callable, Optional
|
||
|
|
||
|
T = TypeVar("T", bound=Callable)
|
||
|
|
||
|
__MAX_SIZE: Optional[int] = 2048
|
||
|
|
||
|
|
||
|
@lru_cache(maxsize=None)
|
||
|
def cache(function: T) -> T:
|
||
|
return lru_cache(maxsize=get_cache_size())(function) # type: ignore
|
||
|
|
||
|
|
||
|
def set_cache_size(size: Optional[int]) -> None:
|
||
|
global __MAX_SIZE # pylint: disable=global-statement
|
||
|
__MAX_SIZE = size
|
||
|
|
||
|
|
||
|
def get_cache_size() -> Optional[int]:
|
||
|
global __MAX_SIZE # pylint: disable=global-variable-not-assigned
|
||
|
return __MAX_SIZE
|
||
|
|
||
|
|
||
|
def clear_cache() -> None:
|
||
|
cache.cache_clear()
|