Python之協程函式

2022-06-17 20:12:14 字數 1357 閱讀 2956

python之協程函式

什麼是協程函式:如果乙個函式內部yield的使用方法是表示式形式的話,如x=yield,那麼該函式成為協程函式。

def

eater(name):

print('

%s start to eat food

' %name)

food_list=

while

true:

food=yield

food_list

print('

%s get %s ,to start eat

' %(name,food))

print('

done')

e=eater('鋼蛋'

)#print(e)

print

(next(e))

print(e.send('奧爾良烤翅'))

print(e.send('香辣雞腿堡'))

print(e.send('奧爾良堡

'))

e.send 和 next(e) 的區別:

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

2. 二者的共同之處是都是可以讓函式在上次暫停的位置繼續執行,不一樣的地方在於send在觸發下一次**的執行時,會順利給yield傳乙個值。

為協程函式新增初始化裝飾器:

def

def inner(*args,**kwargs):

res = func(*args,**kwargs)

next(res)

return

res

return

inner

defeater(name):

print('

%s start to eat food

' %name)

food_list=

while

true:

food=yield

food_list

print('

%s get %s ,to start eat

' %(name,food))

print('

done')

e=eater('鋼蛋'

)#print(e)

print

(next(e))

print(e.send('

奧爾良烤翅'))

print(e.send('

香辣雞腿堡'))

print(e.send('

奧爾良堡

'))

python協程函式

例項 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 張三 n...

Python之協程技術

1.定義 纖程,微執行緒。是允許在不同入口點不同位置暫停或開始的電腦程式,簡單來說,協程就是可以暫停執行的函式。2.協程原理 記錄乙個函式的上下文,協程排程切換時會將記錄的上下文儲存,在切換回來時進行調取,恢復原有的執行內容,以便從上一次執行位置繼續執行。協程本質上就是乙個執行緒,以前多執行緒任務的...

python之協程建立

協程,是充分利用cpu給該執行緒的時間,在乙個執行緒裡放置多個任務,當某個任務阻塞時就執行下乙個任務。其特點是能夠記住這些任務執行到哪一步了,下次再執行該任務的時候回從上次阻塞的地方繼續開始。建立協程需要使用gevent模組。如下 import gevent gevent協程中,遇到需要耗費時間的操...