我目前正在为我的最后一个项目比较生成器表达式和列表理解,在这个过程中,我想比较它们的内存占用。(注意:我读了这篇文章,但没能回答我将要向你提出的问题How do I determine the size of an object in Python?) 我首先为每种类型的结构定义了两个任意实例:
a = [i for i in range(10)]
b = (i for i in range(10))
现在,我尝试用{{CD1>}来分析它们的长度,对于^ {{CD2>}和{^
我不是100%确定sys.getsizeof
包含了range
-实例,因为它可能只是由生成器表达式实例引用的,而afaik引用不与getsizeof
一起计算,所以我还尝试为这两个实例调用pympler.asizeof.asizeof
,结果是a
的值为504,纯range(10)
的值为48,奇怪的是b
的值为0。
借助pympler文档,我注意到有一个ignored
参数指向asizeof
,它忽略了某些类型。我用ignored=False
再次尝试,但得到了完全相同的结果。你知道吗
我想知道的是,为什么生成器表达式的大小为0到asizeof
,以及我是否可以依赖sys.getsizeof
为生成器提供正确的值(毕竟这看起来很现实)。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐