Python heapy显示了恒定的内存使用率,尽管60GB的ram在10分钟内就耗尽了

Python heapy显示了恒定的内存使用率,尽管60GB的ram在10分钟内就耗尽了,python,python-2.7,memory,tensorflow,heapy,Python,Python 2.7,Memory,Tensorflow,Heapy,我正在运行一个tensorflow模型,在处理大图像的过程中,它在大约10分钟内耗尽了60G的内存 我已经运行了Heapy来尝试锁定泄漏,但是Heapy只显示了90M的内存使用量,并且保持不变 我注意到这篇文章: 这表明问题可能是在python(这里是2.7)中出现的内存碎片。但这听起来并不是对这个案件的合理解释 我有两个python队列。在一种情况下,我从磁盘读取一个映像并加载它 使用线程发送到raw队列 在另一个线程中,我读取raw队列,预处理并加载它 进入一个ready队列 在我的主线程

我正在运行一个tensorflow模型,在处理大图像的过程中,它在大约10分钟内耗尽了60G的内存

我已经运行了Heapy来尝试锁定泄漏,但是Heapy只显示了90M的内存使用量,并且保持不变

我注意到这篇文章:

这表明问题可能是在python(这里是2.7)中出现的内存碎片。但这听起来并不是对这个案件的合理解释

  • 我有两个python队列。在一种情况下,我从磁盘读取一个映像并加载它 使用线程发送到
    raw
    队列
  • 在另一个线程中,我读取
    raw
    队列,预处理并加载它 进入一个
    ready
    队列
  • 在我的主线程中,我从
    ready
    队列中绘制了一批8幅图像,并通过tensorflow训练运行它们
  • 对于8个图像(每个~25MB numpy矩阵)的批处理,在任何给定时间,当前处理和两个队列之间应该至少有24*25MB的内存。但heapy仅显示了9000万的消费量
因此,希皮看不到我知道在任何给定时刻必须保存的至少6亿内存

因此,如果heapy看不到我知道的内存在那里,我就不能相信它能看到漏洞在哪里。从泄漏的速度来看,事实上肯定是成批的图像造成了泄漏


我正在使用python中的
线程化
模块启动加载程序和预处理器线程。我尝试从线程代码和主代码中调用
print h.heap()
,结果都是一样的。

我意外地得到了一个无界python
队列。简单的修复。奇怪的是,heapy没有显示队列分配的内存。嗯,
memory\u profiler
做到了,因此我追踪到了这个问题


如果heapy说,“嘿,这个
队列
对象使用的内存比你预期的要多。”

更新,我尝试了
memory\u profiler
它至少看到了漏洞,而不是
heapy
什么都没有看到,我现在正在跟踪它。