Python协程和委派语法
示例
在发布Python3.5+之前,该asyncio模块使用生成器来模仿异步调用,因此其语法与当前的Python3.5版本不同。
Python3.5引入了asyncandawait关键字。请注意在调用周围没有括号。awaitfunc()
import asyncio
async def main():
print(await func())
async def func():
#做时间密集的东西...
return "Hello, world!"
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())在Python3.5之前,@asyncio.coroutine装饰器用于定义协程。表达式的产量用于生成器委派。注意圆括号。yieldfromfunc()
import asyncio
@asyncio.coroutine
def main():
print((yield from func()))
@asyncio.coroutine
def func():
#做时间密集的东西。
return "Hello, world!"
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())