示例0:單線程高效處理生產者與消費者問題 yield用法
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