Python ndarray management - PullRequest
       3

Python ndarray management

0 голосов
/ 18 января 2019

Я хотел бы знать, как Python фактически управляет выделением памяти для ndarrays.

Я загрузил файл, содержащий плавающее значение 32 КБ, используя numpy loadtxt, поэтому размер ndarray должен составлять 256 КБ.

На самом деле, ndarray.nbytes дает правильный размер.

Однако заполнение памяти после загрузки данных увеличивается на 2 МБ: я не понимаю, почему эта разница.

1 Ответ

0 голосов
/ 18 января 2019

Я не уверен, как именно вы измеряете занятость памяти, но, глядя на объем памяти всего приложения, может произойти гораздо больше, что приводит к увеличению объема памяти.

В этом случае я подозреваю, что функция loadtxt использует некоторую буферизацию или иным образом копирует данные, которые еще не были очищены GC.

Но могут происходить и другие вещи. Возможно, numy back-end загружает некоторые дополнительные вещи при первой инициализации ndarray. В любом случае, вы могли бы по-настоящему разобраться в этом, только прочитав обалденный источник, который свободно доступен на github. Реализацию loadtxt можно найти здесь: https://github.com/numpy/numpy/blob/5b22ee427e17706e3b765cf6c65e924d89f3bfce/numpy/lib/npyio.py#L797

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...