描述Python cod内存使用峰值的模块

2024-10-05 10:00:01 发布

您现在位置:Python中文网/ 问答频道 /正文

目前,我尝试使用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 

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


Tags: falsegetreturndefusagememdoprofiler
2条回答

使用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

我主要使用Heapy,因为它非常容易使用。在

只需在您要测试内存使用情况的地方键入以下代码。在

from guppy import hpy
hp = hpy()
print hp.heap()

相关问题 更多 >

    热门问题