Maison >développement back-end >Tutoriel Python >Comment puis-je profiler et surveiller efficacement l'utilisation de la mémoire en Python ?
Comment puis-je analyser l'utilisation de la mémoire en Python ?
Profilage de l'utilisation de la mémoire en Python
Python 3.4 a introduit le module tracemalloc pour une analyse approfondie de l'allocation de mémoire. Pour afficher les statistiques d'allocation de mémoire pour une fonction spécifique :
from tracemalloc import start, take_snapshot, display_top start() # Code to profile memory usage snapshot = take_snapshot() display_top(snapshot)
Surveillance de la mémoire au fil du temps
Pour suivre l'utilisation de la mémoire sur une période prolongée :
from collections import Counter import time def count_prefixes(): counts = Counter() with open('/usr/share/dict/american-english') as words: words = list(words) for word in words: counts[word[:3]] += 1 time.sleep(0.0001) return counts.most_common(3) count_prefixes() snapshot = take_snapshot() display_top(snapshot)
Utilisation d'un thread séparé pour la surveillance
Pour surveiller l'utilisation de la mémoire à partir d'un thread distinct pendant que le le fil principal s'exécute :
from queue import Queue from threading import Thread def memory_monitor(queue): while True: try: command = queue.get(timeout=0.1) if command == 'stop': return snapshot = take_snapshot() print(datetime.now(), 'max RSS', getrusage(RUSAGE_SELF).ru_maxrss) except Empty: continue queue = Queue() monitor_thread = Thread(target=memory_monitor, args=(queue,)) monitor_thread.start() try: count_prefixes() finally: queue.put('stop') monitor_thread.join()
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!