la taille de la mémoire de Python structure de données
Comment puis-je savoir la taille de la mémoire d'un Python structure de données? Je suis à la recherche de quelque chose comme:
sizeof({1:'hello', 2:'world'})
Il est grand si elle compte à chaque chose de manière récursive. Mais même une base non-récursive de résultat permet de. Fondamentalement, je veux avoir une idée des différentes options de mise en œuvre comme le n-uplet c. s. liste c. s. classe en termes d'empreinte mémoire. C'est important parce que j'ai l'intention d'avoir des millions de l'objet instancié.
Mon dev plate-forme est Disponible 2.6.
- Cela va être une très lente du programme, sauf si vous avez beaucoup de mémoire. Plus la taille de la table de recherche va être assez énorme (en millions d'objets?). Just sayin'
- namedtuple c'est une bonne alternative à l'utilisation de classes que l'espace requis par chaque instance est le même que pour un n-uplet. Si vous avez un grand nombre d'instances d'une classe, vous devriez regarder dans
__slots__
Vous devez vous connecter pour publier un commentaire.
Ont un look à la
sys.getsizeof
fonction. Selon la documentation, il retourne la taille d'un objet en octets, est donnée par l'objet__sizeof__
méthode.Comme Daniel souligné dans un commentaire, ce n'est pas récursive; il ne compte octets occupés par l'objet lui-même, pas les autres objets qu'il désigne. Cette recette pour un calcul récursif est lié par le Python 3 de la documentation.