Давайте сделаем так. Я постараюсь на днях (или раньше) снять ролик с парсингом большого файла. И заодно последим за производительностью внимательнее, включая диск.
Можно попробовать брать инфу отрезками. К примеру, можно создать очередь и брать по 1000 (просто число к примеру) элементов. Оптимальное количество можно узнать, хотя бы, простым подбором. Тогда будет баланс. Практический пример, не связанный с генераторами, но с похожим смыслом. Недавно я делал отправку уведомлений всем пользователям в БД. Ни единым запросом проводить INSERT не вариант (съест много оперативки), ни вставкой очереди по одному (будет много запросов). В итоге пришёл к тому, что по 1000 на одну операцию - это оптимальное количество.
@@dmitryalinsky5911 я не вижу чем тут отличается 1000 и 100000 и 10, т.к. судя по объяснению генератор хранит в памяти грубо говоря 1 запись и что бы прочитать другую запись её надо взять откуда-то, в данном случае из файла (диска)
Супер. Спасибо. Вывод: Генератор - это итератор, который позволяет проходить коллекцию не держа ее в памяти. Можно использовать для парсинга больших файлов, Http запросов, и других трудоемких операций, где нужно засунуть огромный объект в оперативку и затем пройтись по нему.
В том-то и дело, что засовывать в оперативку не обязательно. Если работа с файлом (или чем угодно поточным) - читаем его в потоке и обрабатываем построчно. Понимая, что однажды пройдя итерацию, обратно уже не вернёмся. Рад быть полезным! Удачи вам в применении на практике.
Большое спасибо что прислушались и раскрыли тему ! Все четко с толком и расстановкой. В коментах просят про реальный пример с бигдата, согласен это раскроет тему полностью. Будем ждать продолжение :)
Спасибо огромное, я понял генераторы! Очень не хватает иногда информации, которая объясняет суть вещей. Огромный респект за такую вдумчивую подачу знания
Хорошее видео, спасибо!!! но было бы прям СУПЕР, если был бы пример из жизни: "А сейчас мы с вами напишем небольшой парсер csv/excel файлов с помощью генератора"
Как жаль, что не знал о генераторах пару дней назад) Делал тестовое задание, где нужно было сделать отчет о нагрузке посекундно в течение суток. Решение с циклами работает, но занимает много памяти. А если понадобится сделать отчет за несколько дней, памяти не хватит.
Было познавательно и полезно Мне понравился пример на guzzle, вот только было не ясно зачем отправлять 100 одинаковых запросов без изменения отправляемых параметров, возможно я чего то не понимаю.