Форум сайта python.su
Кто-нибудь сталкивался с ошибкой “Memory Error” в процессе обработки больших массивов с NumPy?
В моем случае имеется массив 5670 x 38340 элементов uint16. Эти данные подаю на функцию, которая осуществляет их обработку (бикубический сплайн). Если данных раза в 2 меньше то обработка проходит без проблем.
Полагаю копать нужно в направлении свопа памяти.
Офлайн
скока байт занимает один элемент?)
умножь на ~ 207.317 и получишь количество МЕГАбайт оперативы которое нужно под твою матрицу… И подумай есть ли они у тебя!
Отредактировано (Фев. 23, 2010 18:41:28)
Офлайн
ZubchickПолучается ~414 Мбайт. По идее у меня 2 Гб на машине Ubuntu 9.
скока байт занимает один элемент?)
умножь на ~ 207.317 и получишь количество МЕГАбайт оперативы которое нужно под твою матрицу… И подумай есть ли они у тебя!
Отредактировано (Фев. 23, 2010 19:22:26)
Офлайн
XdenisXДля NumPy теоретический лимит памяти для массива ~2Gb, но на практике такое не получиться из-за того, что:
Непонятно почему не хватает тогда hmm
Офлайн
regallПонятно.
Офлайн
XdenisXИз этой ситуации есть два выхода:
Есть ли выход из этой ситуации? Использование промежуточного файла или БД?
Офлайн
Если есть возможность то можно использовать систему 64bit, я для этого Win-64 и держу например.
Ну и выгрузить/убрать из памяти все промежуточные массивы и все что не требуется в данный момент (а лучше создавать пустой массив в numpy и сразу его заполнять).
Также можно попробовать PyTables (для доступа к массиву на диске) и sparse matrix (если в матрице много повторов, например нолей) в Scipy.
Офлайн