私は以下のプログラムを実行するとメモリが非常に高速に増加するので、 "secundary_function"という名前の関数で使われているメモリは解放されていないと思います。要素をコピーしてリストに追加すると、問題が発生したり、使用しなかったりすると、secundary_function
の問題は解消されます。私はコピーはここでは必要である理由を理解したいのですが、なぜsecundary_function
が使用するメモリに影響を与える。..機能が終了してもメモリが解放されないのはなぜですか?
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)
は、あなたの答えと私の英語のため申し訳ありませんありがとうございます!この行に
3000x25x25の3Dアレイを6000回生成しているようです。それはあなたの意図ですか? – roadrunner66
メモリを解放するためのこのリンクも参照してください:http://stackoverflow.com/questions/18310668/is-freeing-handled-differently-for-small-large-numpy-arrays – roadrunner66
元のプログラムイメージでは、別の3D配列とliste_imagesリストに保持したい25x25 2D配列のいくつかを選択するテストがあります。しかし、私の考えでは、新しい3D配列の「イメージ」を作成するたびに、メモリを解放する必要があります。 –