Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2022 08:21:27

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

xam1816 так у автора

файл может быть очень большим и должен читаться постепенно без загрузки всего файла в оперативную память
хз что там за файлы и какие лимиты по памяти но у вас по факту в out этот файл и пишется
тут наверное нужно что то вроде типа получаем файл дя иследования выдаем файл с результатами



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#2 Июнь 25, 2022 11:45:43

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1310
Репутация: +  113  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

AD0DE412
хз что там за файлы и какие лимиты по памяти но у вас по факту в out этот файл и пишется
ну да f.read() прочитает весь файл, нужно вот так
  
class LinesCompare:
    def __init__(self, file_path):
        self.file_path = file_path
    def count_same_lines(self):
        out = {}
        with open(self.file_path, 'r') as f:
            while line := f.readline().strip(): # здесь берет последовательно по одной строке из файла
                out.setdefault(line, 0)
                out[line] += 1
        return out
if __name__ == '__main__':
    lc = LinesCompare('my_file.txt')
    res = lc.count_same_lines()
    print(res)

Отредактировано xam1816 (Июнь 25, 2022 11:51:39)

Онлайн

#3 Июнь 25, 2022 12:05:29

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

я не про то
смотрите
вот у вас файл на матерное слово много строк и там уникальных строк тоже матерное слово много
сохраня в памяти все уникальные строки мы по факту очень сильно занимаем память (я понимаю там своп итд но …) те автор пытается минимизировать использование ram
вот о чем поинт



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#4 Июнь 25, 2022 12:11:33

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

ээ точка зрения моя ээну пунтик ээ мой



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#5 Июнь 25, 2022 17:13:13

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1310
Репутация: +  113  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

AD0DE412
сохраня в памяти все уникальные строки мы по факту очень сильно занимаем память
вообще счет предполагает хранить в памяти n-й элемент. По другому говоря, как можно утверждать что чего-то два, если не помнить сколько было до этого.

Онлайн

#6 Июнь 25, 2022 18:31:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

AD0DE412
сохраня в памяти все уникальные строки мы по факту очень сильно занимаем память

vladimir_vl_vlad
должен возвращать результат в виде словаря

AD0DE412
а как вы планируете создавать словарь не используя память?

П.С.
Вообще, вся эта ерунда про память исходит скорее всего из иллюзий автора топика. Вот откуда он взял ооооочень большой файл, как вы думаете? Я уверен, что ниоткуда, задача учебная, а ТС фантазирует просто. Если предположить боевую ситуацию, допустим у нас есть какая-то телеметрия и её очень много. Вы бы стали её хранить в огромных неструктурированных файлах? А потом эти файлы какими-то глупыми скриптами обрабатывать? Вы можете представить зачем могла бы понадобиться вот эта бессмысленная работа по собиранию количества вхождений строки в словарь? Ну так люди не делают просто, когда у них есть много данных. Если даже предположить, что и правда много данных формата как в стартовом посте откуда-то прилетают и их надо сохранять в txt и надо считать количество уникальных, ну так считать-то надо не после того, как сохранил в файл, а до. В общем, чепуха это все, не забивайте голову, не бывает в природе таких задач



Офлайн

#7 Июнь 25, 2022 21:52:04

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

если мне не изменяет память автор топика сказал что его устроит любой результат
а так да синтетика скорее всего
зы ну если не используем ram то используем hard так или иначе со всеми минусами кнешно
ззы эээ я не загоняюсь это темой просто … мне показалось что нужно уточнить … немного



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#8 Июнь 26, 2022 01:30:54

vladimir_vl_vlad
Зарегистрирован: 2021-07-16
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса


FishHook
Я уверен, что ниоткуда, задача учебная, а ТС фантазирует просто.
Все верно: задача учебная и в условии прямо указано что файл долже обрабатываться последовательно без загрузки в оперативную память. Еще раз всем спасибо за ответы.

Офлайн

#9 Июнь 26, 2022 01:34:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9731
Репутация: +  843  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

FishHook
Если даже предположить, что и правда много данных формата как в стартовом посте откуда-то прилетают и их надо сохранять в txt и надо считать количество уникальных, ну так считать-то надо не после того, как сохранил в файл, а до.
Это всё домыслы. Этот тупорылый файл может прийти от каких-нибудь биологов или астрономов. Будет весить терабайт и его надо будет обрабатывать тем, что есть, а есть только скрипт на питоне. И вот ты можешь либо на трое суток компьютер поставить в непрерывный режим и он его обработает, а можешь сесть и писать правильную программу целую неделю по всем канонам, а эти ребята найдут другого исполнителя, пока ты будешь её писать, и программа твоя станет не нужна прямо в процессе разработки.

Так что обработка большого файла должна стоять в приоритете, даже если он не нужен.

Задача хорошая - делайте.
Поступают строки вида AAAA, BBBBB и так далее. Надо из них делать словари вида {'AAAA': 1}, {'BBBBB': 3} и так далее. Всё это должно перетекать из входного текстового файла любого размера в выходной текстовый файл любого размера.
При этом на компе нет какой-то суперпамяти оперативной, а есть обычные четыре или восемь гигов, не больше.

AD0DE412 написал хрень.
Общий словарь может не поместиться в памяти.
xam1816 написал хрень.
Входной файл может не поместиться в памяти.


FishHook
Вы можете представить зачем могла бы понадобиться вот эта бессмысленная работа по собиранию количества вхождений строки в словарь?
Да можно много чего представить. Нужны какие-то одиночные словари с вхождениями? Ну, значит, нужны. Может, он пишет какой-то там многоступенчатый сериализатор. Или там пишет компилятор чего-нибудь во что-нибудь с кучей трансляций и перетрансляций.

Я вот сейчас с этим столкнулся, у меня программа сама себе пишет конфигурационные файлы. И там одна часть программы (подсистема) пишет конфигурационные файлы для другой части этой же программы (подсистемы), таким образом эти подсистемы через эти конфигурационные файлы взаимодействуют. Там и стратегии выбираются, и отчёты друг другу передаются. Одна подсистема другой говорит “я там отчёт приготовила, возьми его там-то и там-то” или там “я ковыряла вот это кусок данных и поняла, что там вот такая-то структура, так что ты примени вот такой алгоритм для дальнейшего разбора, а то другой алгоритм даст ошибку или будет неточным”. И там куча таких подсистем и они все друг с другом вот так вот общаются. Всё это инкапсулировано, изолировано и так далее. И уж что в этих конфигурационных файлах ты никак не представишь, потому что их языки я разрабатывал отдельно друг от друга. И там никакого JSON'а нет, XML'а и так далее, там просто тексты. Но какие тексты? ты тоже даже представить себе не можешь. Поэтому у меня всё работает как часы. Я не парюсь, всё ли там правильно отрабатывает. Потому что я знаю, что я всё продумал и всё настроил. Там не будет сбоя или двусмысленности какой-то.

Так что не думай, а просто делай. Сказали “словари нужны” - делай словари. Думать за тебя будет генерал.



Отредактировано py.user.next (Июнь 26, 2022 01:46:06)

Офлайн

#10 Июнь 26, 2022 01:35:52

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9731
Репутация: +  843  -
Профиль   Отправить e-mail  

Возвращение значения из метода класса

vladimir_vl_vlad
Все верно: задача учебная и в условии прямо указано что файл долже обрабатываться последовательно без загрузки в оперативную память. Еще раз всем спасибо за ответы.
Так и есть, потому что тебя учат нормальным вещам, а не какой-то детской хуйне на три строчки.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version