У меня есть серия больших текстовых файлов (до 1 гигабайта), которые выводятся из эксперимента, который необходимо проанализировать на Python. Они были бы лучше загружены в массив 2D numpy, который представляет первый вопрос:
- Поскольку количество строк неизвестно в начале загрузки, как можно очень большой массив numpy будет наиболее эффективно построен, ряд за строкой?
Просто добавление строки в массив будет неэффективным в терминах памяти, так как два больших массива на мгновение сосуществуют. Такая же проблема возникает, если вы используете numpy.append
. Функции stack
являются многообещающими, но в идеале я хотел бы увеличить массив на месте.
Это приводит к второму вопросу:
- Каков наилучший способ наблюдать за использованием памяти программы Python, которая сильно использует массивы numpy?
Чтобы изучить вышеизложенную проблему, я использовал обычные инструменты профилирования памяти - heapy и pympler - но я получаю только размер объектов внешнего массива (80 байтов), а не данные, которые они содержат. Из-за грубого измерения того, сколько памяти использует процесс Python, как я могу получить "полный" размер массивов по мере их роста?
Локальные детали: OSX 10.6, Python 2.6, но общие решения приветствуются.