【发布时间】:2012-12-22 20:12:35
【问题描述】:
我在多线程代码中使用pandas.DataFrame(实际上是DataFrame 的自定义子类,称为Sound)。我注意到我有内存泄漏,因为我的程序的内存使用量逐渐增加超过 1000 万,最终达到我的计算机内存的 ~100% 并崩溃。
我使用objgraph 尝试跟踪此泄漏,并发现MyDataFrame 的实例计数一直在增加,而它不应该:run 方法中的每个线程都会创建一个实例,进行一些计算,将结果保存在文件中并退出......因此不应保留任何引用。
使用objgraph发现内存中的所有数据帧都有一个相似的参考图:
我不知道这是否正常......看起来这就是将我的对象保存在内存中的原因。有什么想法、建议、见解吗?
【问题讨论】:
-
是否可以包含一个短代码 sn-p 来复制它?
-
您是否尝试手动运行垃圾收集器?如果你有循环引用,这可能需要释放内存。
import gc; gc.collect()
标签: python pandas memory-leaks memory-leak-detector objgraph