import sys
num_gen = (num for num in range(1))
print(sys.getsizeof(num_gen))
num_gen = (num for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+1 for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+1+1 for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+num for num in range(100))
print(sys.getsizeof(num_gen))
num_gen = (num+num+1 for num in range(100))
print(sys.getsizeof(num_gen))
输出
200
200
208
208
208
208
为什么下面的4个生成器使用了额外的8个字节?
112
,在CPython 3.10中都打印104
,在CPython 3.11中出现了给定的行为,在我的系统上在CPython 3.12中打印192
x2和200
x3。 - undefinedsys.getsizeof
这样的东西是没有意义的,因为对象可能根本不存在,或者在JIT预热期间具有不同的实际内存大小。 - undefined