Python3.7 高级编程之 async/await asyncio 初识

Python3.7 高级编程之 async/await asyncio 初识
在之前的Python版本中开发者在Python要开启一个协程需要借助yeild或者其他库如gevent、twisted等还是比较麻烦的在后来Python 引入async/await之后开启协程就变得简单起来。初识async/await协程# 携程初步 import asyncio async def main(): print(hello) await asyncio.sleep(1) print(world) # 运行asyncio程序 asyncio.run(main())这里我们需要知道一个知识点什么是可等待对象可等待对象如果一个对象可以在await语句中使用那么它就是可等待对象。Python 可等待对象的三种主要类型协程、任务、Future协程作为可等待对象import asyncio import time # Python 协程属于可等待对象因此可以在其他协程中被等待 Python异步非阻塞雏形 async def nested(): time.sleep(2) # await asyncio.sleep(2) print(我是异步内的任务我已经完成了) return 45 async def main(): # task asyncio.create_task(nested()) # await task # 它会等待任务完成返回后 往下执行如果在Python中想完成异步非阻塞 就需要先开启任务然后执行其他操作在某个地方等待task完成后返回 并退出 print(我会不会先出现...) # nested() print(await nested()) asyncio.run(main())task 任务作为可等待对象import asyncio import time # Python asyncio任务 被用来设置日程以便 并发执行协程 async def nested(): return 我是返回值 async def main(): task asyncio.create_task(nested()) print(await task) asyncio.run(main())至于Future作为可等待对象的后面会单独拿出来讲这里先了解一下Future是可以在await语句中使用即可顺便说一下Future也是Python实现异步的基础