Python heapy显示了恒定的内存使用率,尽管60GB的ram在10分钟内就耗尽了
我正在运行一个tensorflow模型,在处理大图像的过程中,它在大约10分钟内耗尽了60G的内存 我已经运行了Heapy来尝试锁定泄漏,但是Heapy只显示了90M的内存使用量,并且保持不变 我注意到这篇文章: 这表明问题可能是在python(这里是2.7)中出现的内存碎片。但这听起来并不是对这个案件的合理解释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队列 在我的主线程
- 我有两个python队列。在一种情况下,我从磁盘读取一个映像并加载它
使用线程发送到
队列李>raw
- 在另一个线程中,我读取
队列,预处理并加载它 进入一个raw
队列ready
- 在我的主线程中,我从
队列中绘制了一批8幅图像,并通过tensorflow训练运行它们ready
- 对于8个图像(每个~25MB numpy矩阵)的批处理,在任何给定时间,当前处理和两个队列之间应该至少有24*25MB的内存。但heapy仅显示了9000万的消费量
我正在使用python中的
线程化模块启动加载程序和预处理器线程。我尝试从线程代码和主代码中调用print h.heap()
,结果都是一样的。我意外地得到了一个无界python队列。简单的修复。奇怪的是,heapy没有显示队列分配的内存。嗯,memory\u profiler
做到了,因此我追踪到了这个问题
如果heapy说,“嘿,这个队列
对象使用的内存比你预期的要多。”更新,我尝试了memory\u profiler
它至少看到了漏洞,而不是heapy
什么都没有看到,我现在正在跟踪它。