Sobes.tech
Назад к вопросам
Junior — Middle
53

Можешь привести примеры реализации ленивой загрузки и объяснить их особенности?

Ответ от нейросети

sobes.tech AI

Ленивая загрузка (lazy loading) — это техника, при которой объект или ресурс загружается только в момент первого обращения к нему, а не при инициализации программы. В Python есть несколько способов реализации ленивой загрузки:

  1. Использование свойства @property с кешированием
class DataLoader:
    def __init__(self):
        self._data = None

    @property
    def data(self):
        if self._data is None:
            print("Загружаем данные...")
            self._data = [i for i in range(1000000)]  # тяжелая операция
        return self._data

loader = DataLoader()
print("Объект создан")
print(len(loader.data))  # данные загрузятся только здесь
  1. Использование генераторов — данные генерируются по мере необходимости, а не сразу.
def lazy_range(n):
    i = 0
    while i < n:
        yield i
        i += 1

for num in lazy_range(5):
    print(num)
  1. Модуль functools.lru_cache — для ленивого кеширования результатов функций.

Особенности:

  • Экономия памяти и времени при работе с большими данными.
  • Отложенная инициализация может повысить отзывчивость программы.
  • Нужно учитывать потокобезопасность при многопоточном доступе.

Таким образом, ленивую загрузку удобно использовать, когда загрузка ресурса дорогая, а не факт, что он понадобится.