Environnement: Python 3.5.0, 64 bits
L'utilisation de la mémoire d'un objet peut être vérifiée avec sys.getsizeof, mais elle ne compte pas jusqu'à l'objet référencé.
>>> import sys
>>> sys.getsizeof([1, 2 ,3])
88
>>> sys.getsizeof([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
88
Si vous voulez connaître l'utilisation totale approximative de la mémoire, y compris les éléments du conteneur, il semble que vous deviez tracer tous les objets référencés et intégrer la valeur getsizeof.
référence: http://code.activestate.com/recipes/577504/
total_size.py
import sys
from itertools import chain
from collections import deque
def total_size(obj, verbose=False):
seen = set()
def sizeof(o):
if id(o) in seen:
return 0
seen.add(id(o))
s = sys.getsizeof(o, default=0)
if verbose:
print(s, type(o), repr(o))
if isinstance(o, (tuple, list, set, frozenset, deque)):
s += sum(map(sizeof, iter(o)))
elif isinstance(o, dict):
s += sum(map(sizeof, chain.from_iterable(o.items())))
elif "__dict__" in dir(o): #Il doit y avoir un meilleur moyen
s += sum(map(sizeof, chain.from_iterable(o.__dict__.items())))
return s
return sizeof(obj)
Il semble y avoir une autre façon d'utiliser le cornichon.
Recommended Posts