python 協程示例源碼 單線程高效處理生產者與消費者問題 yield用法

 示例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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章