python協程函式

2021-08-25 12:04:14 字數 1005 閱讀 1122

例項:

def menu(x):

print("welcome %s to shaxian restaurant" % x)

men_list =

while true:

print(men_list)

food = yield men_list

print("%s start to eat %s" % (x, food))

g = menu('張三')

next(g)

g.send('包子') # 將'包子'傳給yield ,然後賦值給了food,然後從上次暫停的位置接著執行**,直到又到下乙個yield

g.send('餃子')

g.send('牛肉麵')

g.send與next(g)的區別是:

1.如果函式內yield是表示式形式,那麼必須先next(g)

如果不想寫next的初始化,而直接呼叫send,可以選擇加個裝飾器

def f1(*args, **kwargs):

res = fuc(*args, **kwargs)

next(res) #讓函式呼叫時自動初始化next

return res

return f1

def menu(x):

print("welcome %s to shaxian restaurant" % x)

men_list =

while true:

print(men_list)

food = yield men_list

print("%s start to eat %s" % (x, food))

g = menu('張三')

g.send('包子')

# 將'包子'傳給yield ,然後賦值給了food,然後從上次暫停的位置接著執行**,直到又到下乙個yield

g.send('餃子')

g.send('牛肉麵')

Python之協程函式

python之協程函式 什麼是協程函式 如果乙個函式內部yield的使用方法是表示式形式的話,如x yield,那麼該函式成為協程函式。def eater name print s start to eat food name food list while true food yield food...

python協程與非同步協程

在前面幾個部落格中我們一一對應解決了消費者消費的速度跟不上生產者,浪費我們大量的時間去等待的問題,在這裡,針對業務邏輯比較耗時間的問題,我們還有除了多程序之外更優的解決方式,那就是協程和非同步協程。在引入這個概念之前我們先看 看這個圖 從這個我們可以看出來,假如來了9個任務,即使我們開了多程序,在業...

python 3 協程函式

1 把函式的執行結果封裝好 iter 和 next 即得到乙個迭代器 2 與return功能類似,都可以返回值,但不同的是,return只能返回一次值,而yield可以返回多次值 3 函式暫停與再繼續的狀態是由yield儲存的 def func count print start while tru...