So profilieren Sie die Speichernutzung in Python
Bei der Erforschung von Algorithmen durch Implementierung naiver Versionen und deren Optimierung kann die Analyse der Speichernutzung von entscheidender Bedeutung sein. Python 3.4 führt das Tracemalloc-Modul ein und bietet detaillierte Einblicke in die Codesegmente, die den meisten Speicher belegen.
Verwendung von Tracemalloc
import tracemalloc tracemalloc.start() # Code to profile... snapshot = tracemalloc.take_snapshot() # Display top memory-consuming lines top_stats = snapshot.statistics('lineno') for index, stat in enumerate(top_stats[:3], 1): frame = stat.traceback[0] print(f"#{index}: {frame.filename}:{frame.lineno}: {stat.size / 1024:.1f} KiB")
Beispiel
Profilierung der Speichernutzung beim Zählen von Präfixen in einer Liste von Wörtern aus dem amerikanischen Englisch Wörterbuch:
import tracemalloc import linecache import os tracemalloc.start() words = list(open('/usr/share/dict/american-english')) counts = Counter() for word in words: prefix = word[:3] counts[prefix] += 1 snapshot = tracemalloc.take_snapshot() display_top(snapshot)
Ausgabe
Top 3 lines #1: scratches/memory_test.py:37: 6527.1 KiB words = list(words) #2: scratches/memory_test.py:39: 247.7 KiB prefix = word[:3] #3: scratches/memory_test.py:40: 193.0 KiB counts[prefix] += 1 4 other: 4.3 KiB Total allocated size: 6972.1 KiB
Umgang mit Code, der Speicher freigibt
Wenn eine Funktion viel zuweist des Speichers und gibt dann alles frei. Technisch gesehen ist es kein Leck, verbraucht aber dennoch übermäßig viel Speicher. Um dies zu berücksichtigen, ist es notwendig, Snapshots zu erstellen, während die Funktion ausgeführt wird, oder einen separaten Thread zu verwenden, um die Speichernutzung zu überwachen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Speichernutzung in Python-Code profilieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!