Rechercher les fuites de mémoire dans Python

Il est nécessaire de remettre la procédure de travail d'une simple enquête sur une fuite de mémoire et de la demander, je l'ai donc résumée ici également

J'ai utilisé guppy et heapy, mais tracemalloc est standard dans la série 3.4, et je peux faire la différence entre les instantanés, donc je pense que c'est correct de choisir celui-ci à l'avenir.

Installez et utilisez le module pytracemalloc jusqu'à la série 3.3

Comment utiliser

Afficher la liste de l'utilisation de la mémoire

import tracemalloc

tracemalloc.start()

# ... run your application ...

snapshot = tracemalloc.take_snapshot()
top_stats = snapshot.statistics('lineno')

Le nombre et la taille des blocs alloués sont affichés pour chaque ligne pour laquelle la mémoire est allouée par malloc

Regarde la différence

Cela suffit pour comprendre le problème

import tracemalloc
tracemalloc.start()
# ... start your application ...

snapshot1 = tracemalloc.take_snapshot()
# ... call the function leaking memory ...
snapshot2 = tracemalloc.take_snapshot()

top_stats = snapshot2.compare_to(snapshot1, 'lineno')

print("[ Top 10 differences ]")
for stat in top_stats[:10]:
    print(stat)

Étant donné que la différence entre le nombre de blocs et la taille de chaque ligne où malloc a couru est affichée, la mémoire qui n'est pas libérée même si la fonction est exécutée apparaît comme la différence.

Recommended Posts

Rechercher les fuites de mémoire dans Python
Rechercher des commandes externes avec python
Techniques de tri en Python
À propos de "for _ in range ():" de python
[Python] Générer un code QR en mémoire
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Vérifiez et déplacez le répertoire en Python
Exécutez unittest en Python (pour les débutants)
Comment vérifier la taille de la mémoire d'une variable en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Vérifiez le comportement du destroyer en Python
Fuite de mémoire dans Python Jupyter Lab (Notebook)?
Note de nfc.ContactlessFrontend () de nfcpy de python
Inject est recommandé pour DDD en Python
Vérifier et recevoir le port série en Python (vérification du port)
Conseils pour gérer les binaires en Python
Résumé de diverses instructions for en Python
Tapez les annotations pour Python2 dans les fichiers stub!
Vérifiez si l'URL existe en Python
Modèle pour l'écriture de scripts batch en python
Lors de l'examen de l'utilisation de la mémoire dans Python 3
Comment vérifier la version d'opencv avec python
Traiter plusieurs listes avec for en Python
MongoDB avec Python pour la première fois
Rechercher et vérifier la matrice inverse en Python
Obtenez un jeton pour conoha avec python
Exemple de gestion des fichiers eml en Python
Fiche de triche AtCoder en python (pour moi-même)
J'ai cherché un nombre premier avec python
Remarques sur l'utilisation de python (pydev) avec eclipse
Conseils pour créer de petits outils avec python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
SublimeText2 et SublimeLinter - Vérification de la syntaxe pour Python3 -
30/10/2016 else pour Python3> pour:
Vérifier l'utilisation de la mémoire
Quadtree en Python --2
Python en optimisation
python [pour moi]
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
vérification de la grammaire python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python