例0:プロデューサーとコンシューマーの問題をシングルスレッドで効率的に処理すると、使用量が増えます
def consume():
while True:
# consumer 协程等待接收数据
number = yield # yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator
print("消费", number)
# 让初始化状态的 consumer 协程先执行起来,在 yield 处停止
consumer = consume() # 返回一个generator生成器
print(type(consumer))
next(consumer)
for num in range(0, 2):
print("生产", num)
consumer.send(num) # 发送数据给 consumer 协程
出力
<class 'generator'>
生产 0
消费 0
生产 1
消费 1
例2:Listを使用せずに関数から繰り返し戻り、占有するメモリが少なくなります
def get():
for i in range(0, 3):
yield i
for m in get():
print(m)
出力
0
1
2