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())