有没有办法知道ElementTree DOM消耗了多少内存?

时间:2012-01-28 04:09:28

标签: python xml dom memory elementtree

假设您执行以下操作:

dom = ElementTree()
dom.parse(some_file_path)

我想记录这个dom现在在我的进程中使用的大量内存。我不需要精确的东西,粗糙的东西会做。

我认为我不能从源XML文件的大小派生它。我有一个500千字节的文件似乎在我的python进程的内存使用量增加约5MB后,如上例所示加载它。

我查看了ElementTree API,但没有看到任何提供此信息的API。有人知道在解析/加载XML文件后知道ElementTree实例使用多少内存的方法吗?

1 个答案:

答案 0 :(得分:5)

基本上你想要找到特定python对象的内存消耗。就是这样。这是一个ElementTree对象,但它可以是任何东西。

据我所知,缩短追逐时间找不到python对象的内存大小没有简单的方法。你可能会发现的一个问题是Python对象 - 比如列表和dicts - 可能引用了其他python对象(在这种情况下,你的大小是什么?包含每个对象大小的大小?)。有一些指针开销和与对象类型和垃圾收集相关的内部结构。最后,一些python对象具有非显而易见的行为。例如,列出大多数时间为更多对象预留空间; dicts更复杂,因为它们可以以不同的方式运行(它们对于少量密钥有不同的实现,有时它们会分配条目)。