- 应用场景
- 生成一个大的数据量内容,如果直接生成会占用大量的内存,但当需要时创建,不需要时可以暂停,就可以大量节省内存
import random
def gen_random_num(max_count):
counter = 0
while counter < max_count:
yield random.randint(1000, 9999)
counter += 1
data_list = gen_random_num(3000000)
for item in data_list:
print(item)
def func():
print(111)
v1 = yield 1
print(v1)
print(222)
v2 = yield 2
print(v2)
print(333)
v3 = yield 3
print(v3)
print(444)
data = func()
n1 = data.send(None)
print(n1)
n2 = data.send(666)
- Can’t send non-None value to a just-started generator,这说明第一次传给生成器的必须是None
- 第一次执行
send(None)
时,就是为了进入生成器,遇到第一个yield开始暂停 - 理解就可以,一般都不使用