Maison >développement back-end >Tutoriel Python >Comment puis-je profiler l'utilisation de la mémoire en Python ?
Contexte :
L'optimisation du code pour l'efficacité de la mémoire devient cruciale lors de l'exploration des algorithmes et de leurs performances . Pour y parvenir, la surveillance de l'utilisation de la mémoire est essentielle.
Analyse de la mémoire Python :
Python fournit la fonction timeit pour le profilage d'exécution. Cependant, pour l'analyse de la mémoire, Python 3.4 introduit le module tracemalloc.
Utilisation de tracemalloc :
Pour profiler l'utilisation de la mémoire avec tracemalloc :
import tracemalloc # Start collecting memory usage data tracemalloc.start() # Execute code to analyze memory usage # ... # Take a snapshot of the memory usage data snapshot = tracemalloc.take_snapshot() # Display the top lines with memory consumption display_top(snapshot)
Autres approches :
1. Thread de surveillance de la mémoire en arrière-plan :
Cette approche crée un thread séparé qui surveille périodiquement l'utilisation de la mémoire pendant que le thread principal exécute le code :
import resource import queue from threading import Thread def memory_monitor(command_queue, poll_interval=1): while True: try: command_queue.get(timeout=poll_interval) # Pause the code execution and record the memory usage except Empty: max_rss = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss print('max RSS', max_rss) # Start the memory monitor thread queue = queue.Queue() poll_interval = 0.1 monitor_thread = Thread(target=memory_monitor, args=(queue, poll_interval)) monitor_thread.start()
2. Utilisation de /proc/self/statm (Linux uniquement) :
Sous Linux, le fichier /proc/self/statm fournit des statistiques détaillées sur l'utilisation de la mémoire, notamment :
Size Total program size in pages Resident Resident set size in pages Shared Shared pages Text Text (code) pages Lib Shared library pages Data Data/stack pages
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!