J'ai un script qui charge beaucoup de données en mémoire. Je veux savoir l'efficacité des données stockées dans la mémoire. Donc, je veux être en mesure de savoir combien de mémoire a été utilisée par python avant de charger les données, et après avoir chargé les données. Aussi, je me demande, si c'est un moyen de vérifier l'utilisation de la mémoire de l'objet complexe. Disons que j'ai un dictionnaire imbriqué avec différents types de données à l'intérieur. Comment puis-je savoir combien de mémoire utilisée par toutes les données dans ce dictionnaire. Merci, AlexComment trouver la quantité totale de mémoire utilisée par le processus/objet python dans Windows
Répondre
Autant que je sache, il n'y a pas de moyen facile de voir quelle est la consommation de mémoire d'un certain objet. Ce serait une chose non triviale à faire parce que les références pourraient être partagées entre les objets.
Voici mes deux solutions de contournement préférées:
- Utilisez le gestionnaire de processus. Avoir le programme pause avant l'allocation. Notez la mémoire utilisée avant l'allocation. Allouer. Notez la mémoire après l'allocation. C'est une méthode low-tech mais ça marche.
- Vous pouvez également utiliser
pickle.dump
pour sérialiser votre structure de données. Le pickle résultant sera comparable (pas identique!) En taille à l'espace nécessaire pour stocker la structure de données en mémoire. Pour de meilleurs résultats, utilisez le protocole de pickle binaire.
+1, Conseils pratiques. –
Vous pouvez jeter un coup d'œil au paquet guppy, qui peut vous donner des informations sur la mémoire utilisée par chaque objet chargé. Malheureusement, cela ne semble pas fonctionner sous python> = 2.6, mais c'est bien si vous utilisez au plus python 2.5. Son utilisation est très simple, il suffit de mettre ces lignes dans votre code où vous souhaitez collecter des informations de mémoire:
from guppy import hpy
hp = hpy()
print hp.heap()
qui vous donnera une sortie comme ceci:
Partition of a set of 25961 objects. Total size = 1894868 bytes.
Index Count % Size % Cumulative % Kind (class/dict of class)
0 11901 46 775408 41 775408 41 str
1 6040 23 219964 12 995372 53 tuple
2 1718 7 116824 6 1112196 59 types.CodeType
3 73 0 113608 6 1225804 65 dict of module
4 348 1 107232 6 1333036 70 dict (no owner)
5 196 1 100192 5 1433228 76 dict of type
6 1643 6 92008 5 1525236 80 function
7 209 1 90572 5 1615808 85 type
8 144 1 76800 4 1692608 89 dict of class
9 984 4 35424 2 1728032 91 __builtin__.wrapper_descriptor
ne fonctionne pas pour moi du tout – Alex
erf, mon erreur, il est compatible avec au plus python2.5, pas 2.6, édité ma réponse – MatToufoutu
Afin d'analyser la quantité de mémoire d'un objet utilise, vous pouvez utiliser Pympler:
>>> from pympler import asizeof
>>> obj = dict(nested=dict(trash=[1,2,3]))
>>> asizeof.asizeof(obj)
800
>>> asizeof.asizeof(obj['nested'])
480
>>> asizeof.asizeof(obj['nested']['trash'])
160
>>> asizeof.asizeof(obj['nested']['trash'][0])
24
une alternative est que vous pouvez utiliser les compteurs de performance de fenêtres par pywin32
- 1. Déterminez la quantité de mémoire utilisée par une classe?
- 2. Comment puis-je profiler la quantité de mémoire utilisée par un appel de méthode?
- 3. Découvrez la quantité de mémoire utilisée par un objet en Python
- 4. Comment faire pour déterminer la quantité de mémoire utilisée par le code non managé
- 5. Comment déterminer la quantité de mémoire principale utilisée par une application
- 6. Quantité totale de colonnes dans mySQL!
- 7. % mémoire utilisée sur Linux
- 8. Existe-t-il un moyen de limiter la quantité de mémoire utilisée par "git gc"?
- 9. Obtenir la quantité totale de mémoire disponible dans Adobe Flash à partir d'ActionScript
- 10. Comment trouver la police exacte utilisée par le navigateur
- 11. Détection de la modification totale de la RAM dans Windows
- 12. Comment trouver le nombre d'accès mémoire
- 13. Comment obtenir la mémoire totale allouée par une application (ASP) .NET par programmation?
- 14. Javascript/jQuery - Comment trouver la fuite de mémoire dans ma grande quantité de code?
- 15. Android Comment obtenez-vous la mémoire RAM totale dans l'appareil?
- 16. Limite de Flash Player sur la mémoire totale
- 17. Comment puis-je connaître la quantité de mémoire installée physiquement dans Windows?
- 18. Comment trouver la mémoire utilisée par un objet en PHP? (sizeof)
- 19. Comment savoir combien de mémoire est actuellement utilisée par le cache?
- 20. Comment trouver le nombre d'octets pris par la variable python
- 21. Android Obtenir la mémoire totale de l'application (tas + allocations externes)
- 22. Comment obtenir l'utilisation de la mémoire sous Windows en C++
- 23. Mémoire utilisée par une application iPhone
- 24. code.google.com: quantité d'espace disque SVN utilisée
- 25. Quantité d'utilisation de la mémoire vive
- 26. Lazarus: Impossible de trouver l'unité [unité] utilisée par [programme]
- 27. Peut-on libérer la mémoire utilisée par MKMapView?
- 28. Réaffecter un tableau libère la mémoire utilisée par celui-ci?
- 29. Android: Comment obtenez-vous la mémoire totale/disponible interne?
- 30. Comment obtenir la quantité de mémoire virtuelle gratuite sur Apple/Mac?
Le profiler n'aide pas? – khachik
lequel vous voulez dire? – Alex