歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋(píng)果6袋
6
麥子學(xué)院

Python學(xué)習(xí)之由生成器構(gòu)成的協(xié)程語(yǔ)法詳解

發(fā)布時(shí)間:2017-09-08 22:33  回復(fù):0  查看:2497   最后回復(fù):2017-09-08 22:33  
本文和大家分享的主要是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ā)
您還未登錄,請(qǐng)先登錄

熱門(mén)帖子

最新帖子

?