169 похожих чатов

Ок другой классический пример на генераторы: Есть огромный файл - 100

терабайт. Хочется потихонечку строчка за строчкой считывать и на каждую строчку натравить функцию (допустим которая будет считать сколько было слов плохих упомянуто).
Низкоуровневый вариант на Си предполагает смещение запоминать, и дальше я предполагаю через это как раз начинают работать генераторы, которые просто умеют вернуть следующую строчку сколь угодно большого файла.
Как это в Ар делается?

11 ответов

11 просмотров

Убийственный аргумент за генераторы

Это если в файле есть понятие строчки)) в любом случае можно строчку заменить на количество байт и принцип понятен. Не понятно только зачем это делать в R. Можно также накапливать где-то номер строки и читать также по одной. Тем же fread, например. Для всего низкоуровневого есть соответствующие инструменты. Плох тот мастер, у которого в ящике с инструментами один микроскоп)))

Дмитрий Володин
Это если в файле есть понятие строчки)) в любом сл...

Но это в том числе ответ(ный вопрос) на вопрос "а зачем возвращать генераторы"

Ілія Малекі
Но это в том числе ответ(ный вопрос) на вопрос "а ...

А это ведёт к тому, что R - микроскоп, а питон - мультитул

Serg-Gini Автор вопроса

он разве не всё разом попытается считать?

Serg Gini
он разве не всё разом попытается считать?

Можно поступать строчки и указать, сколько читать. LIMIT OFFSET))

Дмитрий Володин
А это ведёт к тому, что R - микроскоп, а питон - м...

итераторы и в R есть. позаимствованы из питона, но это полезный инструментарий в программировании. он не про векторизацию, а про замену цикла. чем векторизация отличается от итератора. векторизация подразумевает независимое вычисление элементов — можно параллелизировать. итераторы — это безопасный цикл. следующий шаг может быть совершенно непредсказуемым.

Ілія Малекі
Но это в том числе ответ(ный вопрос) на вопрос "а ...

да, генераторы очень полезная вещь, особенно когда выходное множество может быть огромным или бесконечным. генератор же просто выдает следующий элемент, не отжирая при этом память. в R это будет похоже скорее всего на closure: https://rlang.r-lib.org/reference/as_closure.html https://www.youtube.com/watch?v=vgYS-F8opgE

Ilya Shutov
да, генераторы очень полезная вещь, особенно когда...

А как такой имплементацией запомнить, где в функции остановилось выполнение? Другими словами, yield- ить как

Ілія Малекі
А как такой имплементацией запомнить, где в функци...

closure сохраняет внутреннее состояние функции

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Слушайте, ещё такая интересная задачка. Сделан аудит действий пользователей через триггеры в базе, соответственно каждый пользователь имеет свой логин и пароль в базе. Это пре...
Сергей Бычков
12
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта