Назад к вопросам
Junior — Middle
53
Можешь привести примеры реализации ленивой загрузки и объяснить их особенности?
Ответ от нейросети
sobes.tech AI
Ленивая загрузка (lazy loading) — это техника, при которой объект или ресурс загружается только в момент первого обращения к нему, а не при инициализации программы. В Python есть несколько способов реализации ленивой загрузки:
- Использование свойства @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)) # данные загрузятся только здесь
- Использование генераторов — данные генерируются по мере необходимости, а не сразу.
def lazy_range(n):
i = 0
while i < n:
yield i
i += 1
for num in lazy_range(5):
print(num)
- Модуль functools.lru_cache — для ленивого кеширования результатов функций.
Особенности:
- Экономия памяти и времени при работе с большими данными.
- Отложенная инициализация может повысить отзывчивость программы.
- Нужно учитывать потокобезопасность при многопоточном доступе.
Таким образом, ленивую загрузку удобно использовать, когда загрузка ресурса дорогая, а не факт, что он понадобится.