def show_memory(unit='KB', threshold=1): '''查看变量占用内存情况 :param unit: 显示的单位,可为`B`,`KB`,`MB`,`GB` :param threshold: 仅显示内存数值大于等于threshold的变量 ''' from sys import getsizeof scale = {'B': 1, 'KB': 1024, 'MB': 1048576, 'GB': 1073741824}[unit] for i in list(globals().keys()): memory = eval("getsizeof({})".format(i)) // scale if memory >= threshold: print(i, memory, unit) if __name__ == '__main__': a = [i for i in range(10000)] show_memory("KB",10) # a 85 KB
这个会显示所有的变量,通过threshold筛选,不如添加一个排序
https://blog.csdn.net/weixin_30303283/article/details/140745370
使用memory_profiler
库
memory_profiler
是一个用于监控Python程序内存使用的库。它可以显示每行代码的内存使用情况。
首先,需要安装memory_profiler
库:
pip install memory_profiler
然后,使用@profile
装饰器来监控函数的内存使用情况:
from memory profiler import profile @profile def test(): a = [i for i in range(1000000)] test()
运行上述代码后,会生成一个名为memory_profiler_test.txt
的文件,其中包含了每行代码的内存使用情况。