您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python生成器对象:__sizeof __()

Python生成器对象:__sizeof __()

__sizeof__()不按照您的想法去做。该方法返回给定对象的内部大小(以字节为单位),而不是生成器将要返回的项目数。

Python无法事先知道生成器的大小。以下面的无限生成器为例(例如,有更好的方法来创建计数器):

def count():
    count = 0
    while True:
        yield count
        count += 1

那个发电机是无止境的。没有可分配的大小。但是生成器对象本身占用内存:

>>> count.__sizeof__()
88

通常,__sizeof__()您通常不会调用sys.getsizeof()函数,而这会增加垃圾回收器的开销。

如果您 知道 生成器将是有限的,并且 必须 知道它会返回多少个项目,请使用:

sum(1 for item in generator)

但请注意,这会使发电机 耗尽

python 2022/1/1 18:49:17 有502人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶