Ответ 1
Я собираюсь опубликовать этот ответ, как обсуждалось в комментариях. Я видел, как он встречался много раз без принятого ответа.
Ошибка памяти интуитивно понятна - из памяти. Но иногда решение или отладка этой ошибки расстраивает, поскольку у вас достаточно памяти, но ошибка остается.
1) Проверьте ошибки кода
Это может быть "глупый шаг", но почему он первый. Убедитесь, что нет бесконечных циклов или вещей, которые будут заведомо занять много времени (например, используя что-то, модуль os
, который будет искать весь ваш компьютер и помещать вывод в файл excel)
2) Сделайте код более эффективным
Идет по строкам шага 1. Но если что-то простое занимает много времени, обычно есть модуль или лучший способ сделать что-то более быстрое и эффективное использование памяти. Это красота Python и/или языков с открытым исходным кодом!
3) Проверьте общую память объекта
Первый шаг - проверить память объекта. В Stack есть тонны потоков, поэтому вы можете их искать. Популярные ответы здесь и здесь
чтобы найти размер объекта в укусах, вы всегда можете использовать sys.getsizeof()
:
import sys
print(sys.getsizeof(OBEJCT_NAME_HERE))
Теперь может произойти ошибка до того, как что-либо будет создано, но если вы прочитаете куски csv, вы увидите, сколько памяти используется на кусок.
4) Проверьте память во время работы
Иногда у вас достаточно памяти, но функция, с которой вы работаете, потребляет много памяти во время выполнения. Это заставляет память выходить за пределы фактического размера конечного объекта, что приводит к ошибке кода/процесса. Проверка памяти в режиме реального времени является длительной, но может быть выполнена. Ипитон хорош в этом. Проверьте Их документ.
используйте приведенный ниже код, чтобы увидеть документацию прямо в ноутбуке Jupyter:
%mprun?
%memit?
Использование примера:
%load_ext memory_profiler
def lol(x):
return x
%memit lol(500)
#output --- peak memory: 48.31 MiB, increment: 0.00 MiB
Если вам нужна помощь по магическим функциям Это отличный пост
5) Это может быть первым.... но проверьте простые вещи, такие как bit version
Как и в вашем случае, простое переключение версии python, с которой вы работали, решило проблему.
Обычно вышеуказанные шаги решают мои проблемы.