Путаница с кэшированием с помощью декораторов в PythonPython

Программы на Python
Anonymous
Путаница с кэшированием с помощью декораторов в Python

Сообщение Anonymous »

Я работаю с декораторами Python над реализацией кэширования функций. Я понимаю основную концепцию кэширования результатов для повышения производительности, но не могу понять, как обрабатывать различные аргументы функции и обеспечивать обновление кэша при изменении базовых данных.
Я реализовал базовый декоратор, который сохраняет результаты функции в словаре на основе аргументов. Однако этот подход не обрабатывает ситуации, когда аргументы функции могут иметь сложную структуру (например, вложенные списки) или когда базовые данные, на которые опирается функция, могут быть изменены.
def simple_cache(func):
cache = {}
def wrapper(*args, **kwargs):
key = (args, kwargs) # Basic key based on arguments
if key not in cache:
cache[key] = func(*args, **kwargs)
return cache[key]
return wrapper

@simple_cache
def calculate_something(data):
# Simulates complex calculation
# ...
return result


Подробнее здесь: https://stackoverflow.com/questions/787 ... -in-python

Вернуться в «Python»