如何在Python 中分析記憶體使用情況
透過實作簡單版本並最佳化它們來探索演算法時,分析記憶體使用情況至關重要。 Python 3.4 引入了tracemalloc 模組,提供了有關哪些程式碼段分配最多記憶體的詳細資訊。
使用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")
範例
在計算美式英語單字清單中的前綴時分析記憶體使用情況字典:
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)
輸出
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
處理釋放記憶體的程式碼
如果函數分配了很多記憶體記憶體然後全部釋放,從技術上講這不是洩漏,但仍然消耗過多的記憶體。為了解決這個問題,有必要在函數運行時拍攝快照或使用單獨的執行緒來監視記憶體使用情況。
以上是如何分析 Python 程式碼中的記憶體使用情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!