Aşağıdaki programı çalıştırdığımda, bellek çok hızlı artar, dolayısıyla "secundary_function" adlı işlevde kullanılan belleğin serbest bırakılmadığını varsayalım. Sorunu listeye eklediğimde sorunu kopyalarsam veya secundary_function
kullanmazsam sorun ortadan kalkar. Kopya burada gerekli olduğunu ve neden İşlev bittiğinde neden bellek serbest kalmıyor?
import numpy as np
import time
def main_function(N):
liste_images = []
for i in range(N) :
images = np.zeros((3000,25,25))
time.sleep(0.05)
secundary_function(images)
liste_images.append(images[0])
def secundary_function(images):
conservee = np.arange(len(images))
images[conservee]
main_function(6000)
benim İngiliz cevaplar için teşekkür ederiz ve üzgün
secundary_function
kullanılan bellek üzerinde etkisi vardır neden .. anlamak istiyoruz! Bu doğrultuda
3000x25x25 3D dizi 6000 kez oluşturuyorsunuz gibi görünüyor. Bu senin niyetin mi? – roadrunner66
Ayrıca, bellek boşaltma için bu bağlantıya bakın: http://stackoverflow.com/questions/18310668/is-freeing-handled-differently-for-small-large-numpy-arrays – roadrunner66
Orijinal program görüntüleri her zaman bir farklı 3D dizisi ve liste listesinde görünmesini istediğim 25x25 2D-dizilerinden bazılarını seçen bir test var. Ama aklımda, yeni bir 3B dizisi oluşturduğumda her defasında bellekler kurtarılmalı. –