Я пытаюсь выяснить python проблему обработки памяти, возникающую при заполнении массива. Я заполняю огромный многомерный массив длиной [2048,3000,256,76]
, который я уже создал, поэтому его память уже выделена. Я заполняю его для l oop случайными числами, например, так:
import numpy as np
myarray = np.zeros((2048,3000,256,76))
for i in range(2048):
myarray[i,:,:,:] = np.random.normal(0.,1.,[3000,256,76])
Однако, если я вижу память, которую использует процесс, она неуклонно увеличивается до такой степени, что мне приходится Я полагаю, что убить его, потому что предыдущие вызовы np.random.normal
(значения которых я уже сохранил в myarray) не удаляются. Как я могу избавиться от них? Является ли это возможным? Я пытался запустить сборщик мусора, но это не сработало.
Я понимаю, что это довольно простой вопрос c, но все мои навыки выделения памяти основаны на C. Там было просто вопрос освобождения массивов / векторов, чтобы не попадать в подобные проблемы, но я не знаю, как перевести эти навыки в распоряжение объектными вызовами / созданием, кроме вызовов del
и gc
.
Заранее спасибо за любые указатели (каламбур)!
PS: Это всего лишь фрагмент кода игрушки из более крупной проблемы. Моя настоящая проблема связана с многопоточностью, но это может пролить свет на эту проблему.