numpy.memmap не может обрабатывать очень большие данные

С помощью git-subtree есть еще более простой способ. Предполагая, что вы хотите, чтобы ваша папка «выводила» в качестве корня в Heroku, вы можете сделать:

git subtree push --prefix output heroku master

В настоящее время отображается, что git-поддерево включено в git-core, но я не узнайте, выпущена ли эта версия git-core еще.

2
задан cricket_007 16 January 2019 в 03:43
поделиться

1 ответ

Простое решение

Похоже, вы используете 32-битную версию Python (я также предполагаю, что вы работаете в Windows). Из numpy.memmap документов:

Файлы с отображением в памяти не могут превышать 2 ГБ в 32-разрядных системах.

Итак, простое решение вашей проблемы - просто обновить установку Python до 64-битной.

Если ваш процессор был изготовлен где-то за последнее десятилетие, то должна быть возможность перейти на 64-битный Python.

Альтернативы

Пока ваш Python 32-битный, работа с массивами размером более 2 ГБ никогда не будет легкой или прямой. Ваша единственная реальная возможность - разбить массив на части размером не более 2 ГБ в то время, когда вы изначально его создавали / записывали на диск. Затем вы будете работать с каждым произведением независимо.

Кроме того, вам все равно придется использовать numpy.memmap с каждым кусочком, так как в противном случае самому Python не хватит памяти.

Сверхмощные альтернативы

Если вам приходится регулярно обрабатывать большие массивы такого типа, вам следует подумать о переключении своего кода / рабочего процесса на одну из сред больших данных. Сейчас для Python есть целая куча из них. Раньше я широко использовал Pyspark , и его довольно легко использовать (хотя и требует кучу настроек). В комментариях Б. М. упоминает Даск , еще один такой большой каркас данных.

Хотя, если это только одноразовая задача, вероятно, не стоит потрудиться раскрутить одну из этих платформ.

0
ответ дан tel 16 January 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: