空列表的大小大于 nltk 中的语料库对象
Empty list bigger in size than corpus object in nltk
如果某些人与 nltk
一起工作并且
from nltk.book import *
她会发现 text1
有 object 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
对象的实际内存占用量,您可以尝试一下。
如果某些人与 nltk
一起工作并且
from nltk.book import *
她会发现 text1
有 object 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
对象的实际内存占用量,您可以尝试一下。