Python 高级编程之 asyncio并发编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myonelotus/article/details/85216745

Python 高级编程之 asyncio并发编程

1. asyncio 简介

在这里插入图片描述

1.1 协程与 asyncio

协程编写的三个组成部分:1. 事件循环, 2. 回调(驱动生成器), 3. epoll(IO 多路复用)
asyncio是python用于解决异步io编程的一整套解决方案。基于 asyncio 的框架有: tornado、gevent、twisted(scrapy, django channels)。
django channels 用于 HTTP 2.0 开发;torando(实现web服务器), django+flask(uwsgi, gunicorn+nginx);tornado可以直接部署, nginx+tornado

1.2 例子

import asyncio
import time
async def get_html(url):
    print("start get url")
    # 这里不能使用 time.sleep(2) 模拟 HTTP 请求,因为这是一个同步阻塞的方式
    # 这个地方必须加 await
    await asyncio.sleep(2)
    print("end get url")

if __name__ == "__main__":
    start_time = time.time()
    loop = asyncio.get_event_loop()
    tasks = [get_html("http://www.imooc.com") for i in range(10)]
    loop.run_until_complete(asyncio.wait(tasks))
    print(time.time()-start_time)

猜你喜欢

转载自blog.csdn.net/myonelotus/article/details/85216745