為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