чтение из файла: Python vs C
От: Аноним  
Дата: 26.01.09 08:57
Оценка:
Такой вопрос. Здравствуйте, кстати!
В С, как известно, fread пишет в выделенную область памяти, которая передается по указателю, а возвращает число реально прочитанных байт. В Python read прямо возвращает считанные данные в виде строки (через стек!). Отсюда вопросы:

  1. Не произойдет ли беда со стеком, если мне нужно считать слишком много данных?
  2. Можно ли сделать свой маленький велосипедик который будет работать так, как fread в C, или это решается только на уровне builtin-ов

Кратко опишу, почему возник вопрос: надо разбить большой файл на куски и записать в несколько файлов поменьше. В существующем read надо либо считывать по маленькому кусочку (теряем в производительности) либо рискнуть считать большой кусок (он полезет в стек, и что будет дальше — зависит от текущей ситуации: может все рухнуть из-за переполнения стека, а может и нет).
Re: чтение из файла: Python vs C
От: quodum  
Дата: 26.01.09 09:24
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Кратко опишу, почему возник вопрос: надо разбить большой файл на куски и записать в несколько файлов поменьше. В существующем read надо либо считывать по маленькому кусочку (теряем в производительности) либо рискнуть считать большой кусок (он полезет в стек, и что будет дальше — зависит от текущей ситуации: может все рухнуть из-за переполнения стека, а может и нет).


Что это у вас за питон такой экзотический, который строки в стек пихает? Или вы это сами придумали?
Re[2]: чтение из файла: Python vs C
От: Аноним  
Дата: 26.01.09 09:29
Оценка:
Здравствуйте, quodum, Вы писали:

Q>Что это у вас за питон такой экзотический, который строки в стек пихает? Или вы это сами придумали?


Я пишу:
data=file.read(100000)



The bytes are returned as a string object


Как ко мне возвращается этот самый объект — через стек? Вроде так, другого пути у него нет.
Re[3]: чтение из файла: Python vs C
От: SergH Россия  
Дата: 26.01.09 09:33
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как ко мне возвращается этот самый объект — через стек? Вроде так, другого пути у него нет.


В питоне все объекты хранятся в куче, а переменные -- это ссылки на них.
Делай что должно, и будь что будет
Re[4]: чтение из файла: Python vs C
От: Аноним  
Дата: 26.01.09 09:41
Оценка:
Здравствуйте, SergH, Вы писали:

SH>В питоне все объекты хранятся в куче, а переменные -- это ссылки на них.


Thank you.
Re: чтение из файла: Python vs C
От: Nuald Россия http://nuald.blogspot.com
Дата: 28.01.09 05:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Кратко опишу, почему возник вопрос: надо разбить большой файл на куски и записать в несколько файлов поменьше. В существующем read надо либо считывать по маленькому кусочку (теряем в производительности) либо рискнуть считать большой кусок (он полезет в стек, и что будет дальше — зависит от текущей ситуации: может все рухнуть из-за переполнения стека, а может и нет).


Не могу не поделиться ссылкой, как бы это сделал сам создатель Python
http://neopythonic.blogspot.com/2008/10/sorting-million-32-bit-integers-in-2mb.html
Здесь задача, конечно, совершенно другая, однако сам принцип — использовать yield-ы и буферы, примерно тот же самый.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.