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

T.r*_*hdi 1 python memory-profiling python-2.7 python-3.x

目前,我尝试使用 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 
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*son 7

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))
Run Code Online (Sandbox Code Playgroud)

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