Stimmt, ich habe meine Frage nicht genug anschaulich formatiert. Ich korrigiere das:
Code: Alles auswählen
# erste Version (mit dem Speicherleck)
def observation(self, frame):
data = copy(frame)
frame = np.zeros(self.observation_space.low.shape)
return frame.reshape(self.observation_space.low.shape)
Code: Alles auswählen
# zweite Version (ohne Speicherleck)
def observation(self, frame):
data = copy(frame)
frame = cv2.resize(frame, (self.width, self.height), interpolation=cv2.INTER_AREA)
return frame.reshape(self.observation_space.low.shape)
So, jetzt sieht man sicher, dass nur eine Zeile sich unterscheidet.
EinArray braucht so viel Platz wie es braucht
Genau das verstehe ich nicht: sowohl np.zeros() als auch cv2.resize() erzeugen ein Array der Groesse (nicht shape) self.observation_space.low.shape. Warum fuehrt das im ersten Fall zu einem unvergleichbar groesserem Speicherverbrauh als im zweiten Fall?
Willst du nur die `shape` des Arrays ändern oder ein neues Array gleicher Dimension erstellen?
Ich will ein neues Array mit shape=self.observation_space.low.shape erstellen.
Auf die Punkte von __blackjack__ bist du gar nicht eingegangen. Deine Funktion macht einfach unnütze Dinge. Beispielsweise wird `frame` kopiert und die Kopie namens `data` dann nicht verwendet.
Wie ich schon geantwortet habe, ich wollte den Unterschied zwischen Versionen moeglichst klein machen. `data` wird nicht verwendet - ich weiss, das passiert aber in beiden Versionen => das Problem liegt nicht daran, warum besprechen wir das?
Wozu?
Ich will + ich kann.