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