UPDATE: - Эта проблема решена после перезагрузки компьютера. Пока еще не удалось выяснить, почему эта ошибка происходила раньше.
У меня есть функция, которая загружает огромный массив numpy (~ 980 МБ) и возвращает его.
Когда я впервые запускаю Ipython и вызываю эту функцию, он без проблем загружает массив в переменную.
Но если я снова запустил ту же команду, она выйдет из строя "Ошибка памяти".
Я попробовал следующее:
del hugeArray
По-прежнему была ошибка. Я даже попробовал следующее
del hugeArray
gc.collect()
gc.collect()
Изначально gc.collect()
вернул 145, а второй вызвал 48.
Но даже после этого, когда я вызываю функцию, она все еще поднимает ошибку памяти.
Единственный способ, которым я мог снова загрузиться, - перезапустить ipython. Есть ли что-то, что я могу сделать, чтобы освободить всю память в ipython, так что мне не нужно ее перезапускать?
---------------- Update
Ниже представлен вывод %whos
Variable Type Data/Info
------------------------------
gc module <module 'gc' (built-in)>
gr module <module 'Generate4mRamp' <...>rom 'Generate4mRamp.pyc'>
np module <module 'numpy' from '/us<...>ages/numpy/__init__.pyc'>
plt module <module 'matplotlib.pyplo<...>s/matplotlib/pyplot.pyc'>
Из этого, gr - мой модуль, содержащий функцию, которую я использовал для загрузки куба данных.
--------- Воспроизведение ошибки
Следующая простая функция способна воспроизвести ошибку.
import numpy as np
import gc
def functionH():
cube=np.zeros((200,1024,1024))
return cube
testcube=functionH() #Runs without any issue
del testcube
testcube=functionH() # Raises Memory Error
del testcube
gc.collect()
gc.collect()
testcube=functionH() # Still Raises Memory Error
Эта ошибка возникает только в Ipython. В простом python ( → > ) после предоставления del testcube
Ошибка памяти.