Pythonpympler.asizeof.asizeof公司为generatorexpression返回0

2024-05-14 14:59:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在为我的最后一个项目比较生成器表达式和列表理解,在这个过程中,我想比较它们的内存占用。(注意:我读了这篇文章,但没能回答我将要向你提出的问题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>}和{^ }(对于空白{{CD4>}),分别产生192(88和48)。你知道吗

我不是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为生成器提供正确的值(毕竟这看起来很现实)。你知道吗


Tags: 项目实例内存in类型列表for表达式

热门问题