首页 > 解决方案 > 为什么 guppy3 和 memory_profiler 差异如此之大?

问题描述

我已经使用 memory_profiler 和 guppy3 来分析我的 python 程序的内存使用情况,但得到了完全不同的结果。我的实验侧重于多处理,所以这里让我给你看一个简单的例子:

假设我们有一个列表:l = [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (2, 3), (4, 5), (6, 7), (8, 9)] 和一个函数:

def f(x):
  time.sleep(1)
  x1 = x + 1
  if x1 > 5:
      return x1

和另一个多处理功能:

def myfunc():
  p = Pool(4)
  a = [x for (x, y) in l]

  p.map_async(f, a)
  p.close()
  p.join()

然而 guppy3 的结果显示如下:

创建对象后的内存使用量:0.3077840805053711 MB

memory_profiler 显示如下: mprof plot 整体

任何想法?对于分析 python 中的多处理内存使用情况,您有什么建议吗?

标签: pythonmultiprocessingpython-multiprocessingmemory-profilingguppy

解决方案


推荐阅读