Ответ 1
Heapy является профилировщиком памяти для Python, который является типом необходимого вам инструмента.
У меня есть программа Python, которая умирает с MemoryError, когда я кормлю ее большим файлом. Существуют ли какие-либо инструменты, которые я мог бы использовать, чтобы понять, что использует память?
Эта программа отлично работает на небольших входных файлах. Очевидно, что программа нуждается в улучшении масштабируемости; Я просто пытаюсь выяснить, где. "Тест, прежде чем вы оптимизируете", как однажды сказал мудрый человек.
(Только для предотвращения неизбежного ответа "добавить больше оперативной памяти": это работает в 32-разрядном окне WinXP с 4 ГБ оперативной памяти, поэтому Python имеет доступ к 2 ГБ полезной памяти. Добавление большего объема памяти технически невозможно. ПК с 64-битной Windows не является практичным.)
EDIT: Ой, это дубликат Какой профилер памяти Python рекомендуется?
Heapy является профилировщиком памяти для Python, который является типом необходимого вам инструмента.
Простейшим и легким способом, вероятно, будет использование встроенных возможностей запроса памяти на Python, например sys.getsizeof
- просто запустить это на ваших объектах для уменьшения проблемы (т.е. меньшего файла) и посмотреть, что занимает много памяти.
В вашем случае ответ, вероятно, очень прост: не читайте весь файл сразу, а обрабатывайте кусок файла куском. Это может быть очень легко или сложно в зависимости от вашего сценария использования. Например, вычисление контрольных сумм MD5 может быть сделано гораздо более эффективно для огромных файлов без чтения всего файла. Последнее изменение значительно сократило потребление памяти в некоторых сценариях использования SCons, но почти невозможно было отслеживать с помощью профилировщика памяти.
Если вам по-прежнему нужен профайлер памяти: eliben уже предложил sys.getsizeof. Если это не разрезает, попробуйте Heapy или Pympler.
Вы попросили рекомендацию по инструменту:
Python Memory Validator позволяет отслеживать использование памяти, места размещения, коллекции GC, экземпляры объектов, снимки памяти и т.д. вашего приложения Python. Только Windows.
http://www.softwareverify.com/python/memory/index.html
Отказ от ответственности: я участвовал в создании этого программного обеспечения.