對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。
本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。
結果呈現
印出當前使用的記憶體,與峰值記憶體使用量。
程式範例
import tracemalloc
# 開始追蹤 Python 記憶體分配
tracemalloc.start()
# 執行你要分析的代碼
# 示例代碼:創建一個大的列表
large_list = [i for i in range(100000)]
# 記錄所有追蹤記憶體區塊的當前和峰值大小
current, peak = tracemalloc.get_traced_memory()
print(f"當前: {current / 10**6} MB")
print(f"峰值: {peak / 10**6} MB")
# 停止追蹤
tracemalloc.stop()
程式詳細說明
- 導入 tracemalloc 模組
import tracemalloc
tracemalloc
模組,它提供了一個簡單的介面來追蹤記憶體分配。 - 開始追蹤記憶體分配
tracemalloc.start()
tracemalloc.start()
開始追蹤 Python 程式的記憶體分配。你可以選擇記錄的快取數量,預設為 1。更多的快取可以提供更詳細的歷史資料,但會佔用更多記憶體。 - 執行要分析的代碼
large_list = [i for i in range(100000)]
這段示例代碼創建了一個包含 100,000 個整數的大列表。這是一個簡單的示例,你可以替換成實際需要分析的代碼。 - 讀取當前和峰值記憶體使用量
current, peak = tracemalloc.get_traced_memory()
print(f"當前: {current / 10**6} MB")
print(f"峰值: {peak / 10**6} MB")tracemalloc.get_traced_memory()
函數返回兩個值:當前追蹤的記憶體使用量和峰值記憶體使用量。這些值以字節為單位,所以我們將其除以 1,000,000 以轉換為 MB(兆字節)。這些資訊可以幫助你了解程式的記憶體使用情況,找出記憶體佔用高峰。