Python 中的异步模式

异步模式

为什么需要异步模式?

  在程序的执行过程当中,常常会遇到情况,就是需要等待,例如网络返回需要等待,这个时候本地的程序就处在没事可做的状态。但是实际上这个时候本地程序还是可以继续下载别的链接的。但是由于程序设置的原因,导致程序阻塞了。所以需要一个异步模式。
  在实际的生活当中也常常会遇到这种情况,比如说我们去饭馆吃饭,在点菜的时候,可能会点了多道菜,上菜的时候不一定是按照我们点菜的顺序来上菜,而是哪道菜做好了,先上哪道菜,我们来吃哪道菜。否则的话,我们的生活实在是太痛苦了。
  由此可见,在多个对象通讯配合的情况下,异步模式是一个很常见的模式。需要我们重点关注一下。

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

你可能感兴趣的:(Python 中的异步模式)