如果一些作品与nltk
和做了空列表更大的NLTK
from nltk.book import *
,她会发现,text1
有object size
的64 bytes
做一个
import sys
sys.getsizeof(text1)
text1
是一个你刚才输入的books。如果现在她做了
text1 = []
text1
的大小增加到72!这是为什么?为什么一个空列表比我的机器中的先前对象形式占用更多内存?
有没有人知道这件事?谢谢
如果一些作品与nltk
和做了空列表更大的NLTK
from nltk.book import *
,她会发现,text1
有object size
的64 bytes
做一个
import sys
sys.getsizeof(text1)
text1
是一个你刚才输入的books。如果现在她做了
text1 = []
text1
的大小增加到72!这是为什么?为什么一个空列表比我的机器中的先前对象形式占用更多内存?
有没有人知道这件事?谢谢
这里有一些事情正在进行,但主要是这只是对getsizeof
输出的误解。
从文档:
所有内置对象将返回正确的结果,但这不必持有第三方扩展真实,因为它是特定的实现。 (重点煤矿)
我们可以看到这个工作表(注意值是在我的32位虚拟机不同):
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
对象的实际内存占用你的SY干。
谢谢'双位炼金术士 – pebox11
第一次运行'sys.getsizeof'时,'text1'是什么? (我没有发现这一切令人惊讶;我只是想澄清。) –
'text1'是你刚才用这个语句导入的书籍之一。这是一个[默认](http://www.nltk.org/book/ch01.html)导入nltk – pebox11