本文和大家分享的主要是python
中
由生成器構(gòu)成的協(xié)程語(yǔ)法相關(guān)內(nèi)容,一起來(lái)看看吧,希望對(duì)大家
學(xué)習(xí)python有所幫助。
雖然在python3.5
版本之后增加
async def
和
await
語(yǔ)法,但是之前的
asyncio.coroutine()
生成器的裝飾器還是可以使用的,并且使用
yield from
的語(yǔ)法,實(shí)際同樣的效果,代碼如下:
import asyncio
@asyncio.coroutine
def
outer():
print('in outer')
print('waiting for result1')
result1 =
yield
from phase1()
print('waiting for result2')
result2 =
yield
from phase2(result1)
return (result1, result2)
@asyncio.coroutine
def
phase1():
print('in phase1')
return 'result1'
@asyncio.coroutine
def
phase2(arg):
print('in phase2')
return 'result2 derived from {}'.format(arg)
event_loop = asyncio.get_event_loop()
try:
return_value = event_loop.run_until_complete(outer())
print('return value: {!r}'.format(return_value))
finally:
event_loop.close()
結(jié)果輸出如下:
in outer
waiting for result1
in phase1
waiting for result2
in phase2
return value: ('result1', 'result2 derived from result1')
可以看到跟前面的例子運(yùn)行結(jié)果是一樣的。
來(lái)源:
大坡3D
軟件開(kāi)發(fā)