基于coroutine是一个从生成器过度到协程的方案yield和await的混合使用造成代码的可读性很差生成器可以模拟协程,但是生成器应该作自己原生协程可以使用async for和async with更符合python风格原生协程返回的是一个awaitable的对象、装饰器的协程返回的是一个future