空列表的大小大于 nltk 中的语料库对象

Empty list bigger in size than corpus object in nltk

如果某些人与 nltk 一起工作并且

from nltk.book import *

她会发现 text1object size 的 64 bytes

import sys
sys.getsizeof(text1)

text1 是您刚刚导入的 books 之一。如果现在她做一个

text1 = []

text1 的大小增加到 72!这是为什么?为什么一个空列表在我的机器中比它以前的对象形式占用更多的内存?

有人知道这件事吗?谢谢

这里发生了一些事情,但主要是对 getsizeof.

输出的误解

来自文档:

All built-in objects will return correct results, but this does not have to hold true for third-party extensions as it is implementation specific. (emphasis mine)

我们可以看到这适用于列表(请注意我的 32 位 VM 上的值不同):

In [7]: sys.getsizeof([1])
Out[7]: 36

In [8]: sys.getsizeof([1, 2, 3])
Out[8]: 44

但是,nltk.text.Text 对象似乎没有正确报告其大小:

In [9]: sys.getsizeof(text1)
Out[9]: 28

In [10]: sys.getsizeof(text1.tokens)
Out[10]: 1173740

文档还提到 recursive recipe 如果您有兴趣找出系统上 nltk 对象的实际内存占用量,您可以尝试一下。