带有tf.py_func的队列读取器会产生内存泄漏

时间:2017-05-24 21:47:01

标签: memory-leaks tensorflow queue reader

我正在尝试编写一个队列阅读器,它遍历一个大文件并在每行上运行python函数,然后再将其传递给实际操作。

我使用private string log; public string Log { get => log; set => log = value; } 来读取单个string_input_producer文件。然后,我使用.tsv创建一个队列,并使用tf.TextLineReader增强每一行。这样做,我注意到一些内存泄漏只有在调用tf.py_func时才会生效(是的,即使是noop)。

运行以下代码会产生以下结果:

tf.py_func

正如您所看到的,运行不带$ python test_memory.py 2> /dev/null run WITHOUT tf.py_func 00001/50000, 1.4260% mem 05001/50000, 1.4512% mem 10001/50000, 1.4512% mem 15001/50000, 1.4512% mem 20001/50000, 1.4512% mem 25001/50000, 1.4516% mem 30001/50000, 1.4516% mem 35001/50000, 1.4516% mem 40001/50000, 1.4516% mem 45001/50000, 1.4516% mem 50000/50000, 1.4516% mem =========================== run WITH tf.py_func 00001/50000, 1.4975% mem 05001/50000, 1.5051% mem 10001/50000, 1.5066% mem 15001/50000, 1.5081% mem 20001/50000, 1.5110% mem 25001/50000, 1.5137% mem 30001/50000, 1.5148% mem 35001/50000, 1.5165% mem 40001/50000, 1.5195% mem 45001/50000, 1.5210% mem 50000/50000, 1.5235% mem =========================== 的代码可以保持已使用的内存稳定,而使用python函数运行它会使其不断增加。对于行数较大的文件,此效果更为明显。

tf.py_func

test_memory.py

我很感激任何指针或想法如何进一步调试这个?!也许有办法看看python函数是否保留了某种存储空间?

谢谢!

0 个答案:

没有答案