tracemalloc庫追蹤程式碼申請的記憶體大小

园糯發表於2024-11-05

為python程式碼{%code%}新增如下程式碼:

import tracemalloc
tracemalloc.start()
f=open('mem_size.txt','w',encoding='utf8')
{% code %}
snapshot=tracemalloc.take_snapshot()
top_stats=snapshot.statistics('lineno')
for stat in top_stats:
	f.write(str(stat)+'\n')
f.close()

追蹤這片程式碼所涉及的記憶體申請過程,包括所申請記憶體的大小

對記錄結果進行分析:

from collections import defaultdict

with open('mem_size.txt','r',encoding='utf8') as f:
	contents=f.read()

contents=contents.strip().split('\n')
print(len(contents))
malloc_size=defaultdict(int)
for content in contents:
	units=content.split(' ')
	if units[-4]=='KiB,':
		malloc_size[' '.join(units[:-5])]+=float(units[-5][5:])*1024
	elif units[-4]=='B,':
		malloc_size[' '.join(units[:-5])]+=float(units[-5][5:])
	else:
		print(units)
		break
malloc_size=sorted(malloc_size.items(),key=lambda x:x[1],reverse=True)
for ms in malloc_size:
	if ms[0].startswith('/home/tellw'):
		print(ms)

可以檢視自己所寫的程式碼所申請記憶體空間大小的情況

參考連結:

python3使用迭代生成器yield減少記憶體佔用

建立於202411052157,修改於202411052157

相關文章