Gemäß der documentation, sys.getsizeof
macht folgendes:
Return die Größe eines Objekts in Bytes. Das Objekt kann eine beliebige Art von Objekt sein. Alle integrierten Objekte geben korrekte Ergebnisse zurück, aber dieses muss nicht für Erweiterungen von Drittanbietern gelten, da es implementierungsspezifisch ist.
Nur der Speicherverbrauch, der dem Objekt direkt zugeordnet wird, wird berücksichtigt, nicht der Speicherverbrauch der Objekte, auf die es sich bezieht.
So nur sehr primitive Typen in eingebauten Objekten werden Sie jemals wirklich genaue Ergebnisse erhalten. Selbst für integrierte Containertypen müssen Sie normalerweise eine Art rekursiver Funktion verwenden, um die "Gesamtgröße" des Containers (Liste, Wörterbuch usw.) zu ermitteln. Denken Sie jedoch daran, dass eine Python-Liste wirklich nur eine Reihe von Zeigern ist, so dass es in gewisser Weise eine genaue Zahl ist.
aber Sie suchen nach etwas wie folgt aus:
https://code.activestate.com/recipes/577504/
Auch beachten:
>>> sys.getsizeof(npArrayList[0])
96
>>>
Jedes numpy Objekt -oder jedes Objekt für die Materie- hat einen Overhead, und wenn Sie eine np.array
als Listenelement zuweisen, erstellen Sie ein neues Objekt, also wirklich, das folgende dauert nur ich n, um den Speicher des Array-Inhalts und nicht den Overhead des gesamten Objekts zu berücksichtigen:
Die Liste enthält Zeiger. Hier sind die Zeiger auf 4-Element-Arrays, aber jedes Array teilt Daten mit dem Master-Array (eine Ansicht) – hpaulj