Skip to main content
 首页 » 编程设计

python之用于分析 Python 代码的峰值内存使用情况的模块

2025年05月04日29zengkefu

目前,我尝试使用 memory_profiler 模块来获取已使用的内存,如下代码所示:

from memory_profiler import memory_usage 
memories=[] 
def get_memory(mem,ended): 
  if ended: 
    highest_mem=max(mem) 
    print highest_mem 
  else: 
  memories.append(mem) 
 
def f1(): 
  #do something 
  ended=False 
  get_memory(memory_usage(),ended) 
  return #something 
def f2(): 
  #do something 
  ended=False 
  get_memory(memory_usage(),ended) 
  return #something 
 
#main 
f1() 
f2() 
ended=True 
get_memory(memory_usage(),ended) #code end 
 
>>>#output 
# output  
# highest memory  

然而,它并没有成功执行。 ended=True时卡住了,发送memory_usage()的值结束给get_memory函数。它也没有显示任何错误。只是等待了很长时间,然后我强制停止执行。有人知道更好的方法或解决方案吗?

请您参考如下方法:

使用 memory_usage 从代码块中获取峰值/最大内存的一种简单方法是首先将该代码放入函数中,然后传递该函数 - 无需 () 调用 -将 memory_usage() 作为 proc 参数:

from memory_profiler import memory_usage 
 
def myfunc(): 
  # code 
  return 
     
mem = max(memory_usage(proc=myfunc)) 
 
print("Maximum memory used: {} MiB".format(mem)) 

其他参数允许您收集时间戳、返回值、将参数传递给 myfunc 等。docstring 似乎是有关此文档的唯一完整来源:https://github.com/fabianp/memory_profiler/blob/master/memory_profiler.py

https://github.com/fabianp/memory_profiler/blob/4089e3ed4d5c4197925a2df8393d4cbfca745ae5/memory_profiler.py#L244