Python 中的异步模式
2018-11-13 本文已影响0人
Devest
异步模式
为什么需要异步模式?
在程序的执行过程当中,常常会遇到情况,就是需要等待,例如网络返回需要等待,这个时候本地的程序就处在没事可做的状态。但是实际上这个时候本地程序还是可以继续下载别的链接的。但是由于程序设置的原因,导致程序阻塞了。所以需要一个异步模式。
在实际的生活当中也常常会遇到这种情况,比如说我们去饭馆吃饭,在点菜的时候,可能会点了多道菜,上菜的时候不一定是按照我们点菜的顺序来上菜,而是哪道菜做好了,先上哪道菜,我们来吃哪道菜。否则的话,我们的生活实在是太痛苦了。
由此可见,在多个对象通讯配合的情况下,异步模式是一个很常见的模式。需要我们重点关注一下。
Python 中有几种异步模式?
多进程
多线程
coroutine/yield from
async/await
为什么要选择 async/await 的模式?
import aiohttp
import asyncio
async def fetch(session, url):
async with session.get(url) as response:
html = await response.text()
print(html)
async main():
async with aiohttp.ClientSession() as session:
await fetch(session, 'http://baidu.com')
await fetch(session, 'http://sina.com')
await fetch(session, 'http://sohu.com')
loop = asyncio.get_event_loop()
loop.run_until_complete(main())