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