Python 生成器 (Generator)
大家好!今天我们来聊聊Python的生成器 generator。 生成器是一种特殊的迭代器, 它使用yield语句来产生值。 与一次性返回所有值的函数不同, 生成器在每次调用next()时,产生一个值。 这使得生成器在处理大量数据时非常有效, 因为它们不会一次性 将所有数据加载到内存中。
看下例子,my_generator是生成器, 它会在执行yield的时候返回结果暂停执行,直到调用侧执行next迭代时。 请看下x和g这两个变量, x使用了普通写法,g使用了生成器, 这两个实质上都是函数。 请看他们内存中的占用情况。 x的内存占用需要迭代的数的大小有关,而g是固定的。
希望这个简单的例子能帮助你理解Python的generator!
代码示例
import sys
def my_generator(n):
value = 0
while value < n:
yield value
value += 1
x = [i ** 2 for i in range(100000)]
g = my_generator(100000)
for el in x:
print(el)
for i in my_generator(100000):
print(i)
# print 800984 bytes
print(sys.getsizeof(x))
# print 192 bytes
print(sys.getsizeof(g))