LRU Cache in Python: Optimizing Your Code with Caching Strategies

LRU кеш (Least Recently Used Cache) - это способ кэширования данных в программе, при котором сохраняется определенное количество наиболее часто используемых элементов. Если в кеше нет места, то будут удалены элементы, которые были наименее использованы. LRU кеш обеспечивает быстрый доступ к данным и ускоряет выполнение программы.

В Python существует несколько библиотек, которые уже содержат реализацию LRU кеша, например, functools.lru_cache.

Однако, если необходимо создать свою реализацию LRU кеша в Python, можно использовать OrderedDict.

Пример реализации LRU кеша на Python с использованием OrderedDict:

python
from collections import OrderedDict
class LRUCache:
    
    def __init__(self, capacity):
        self.cache = OrderedDict()
        self.capacity = capacity
    
    def get(self, key):
        if key not in self.cache:
            return -1
        value = self.cache.pop(key)
        self.cache[key] = value
        return value
    
    def put(self, key, value):
        if key in self.cache:
            self.cache.pop(key)
        elif len(self.cache) == self.capacity:
            self.cache.popitem(last=False)
        self.cache[key] = value

В данной реализации, при добавлении/обновлении элемента в кеш, если он уже существует, он удаляется. Если размер кеша больше заданной емкости, удаляется элемент, который был добавлен наименее недавно (т.е. самый старый). При каждом обращении к элементу в кеше, он перемещается в конец списка, чтобы мы могли отследить, какие элементы были использованы давно и какие можно удалить при необходимости.

Пример использования:

python
cache = LRUCache(2)
cache.put(1, 1)
cache.put(2, 2)
print(cache.get(1)) # вернет 1
cache.put(3, 3)
print(cache.get(2)) # вернет -1, так как элемент с ключом 2 был удален из-за маленькой емкости
cache.put(4, 4)
print(cache.get(1)) # вернет -1, так как элемент с ключом 1 находится в начале списка и был удален при добавлении новых элементов
print(cache.get(3)) # вернет 3
print(cache.get(4)) # вернет 4

Похожие вопросы на: "lru cache python "

Роял АПИ: эффективное решение для разработки приложений
Inline Block CSS: применение и возможности
SQL онлайн компилятор – проверьте и исполните свой код SQL просто и быстро
Java Byte: основы и возможности
STL std::pair - пара значений в языке C++
Single Elimination: A Comprehensive Guide to One of the Most Popular Tournament Formats
Изучение HTML и JavaScript для новичков
Как перезагрузить компьютер через командную строку cmd: подробная инструкция
Java Runnable: Simplifying Multithreaded Java Application Execution
Преобразование типов Python