嘘~ 正在从服务器偷取页面 . . .

工欲善其事,必先利其器——协程(1)


什么是协程

简单来说,协程就是同时开启多个任务,但一次只顺序执行一个。等到所执行的任务遭遇阻塞,就切换到下一个任务继续执行,以期节省下阻塞所占用的时间。

简单说明

简单的代码示例

import asyncio
import time

async def func(url): # 定义一个协程函数
    print("正在下载 url", url)
    await asyncio.sleep(2) # 等待。等待的是一个协程函数
    print("下载完成,", url)

if __name__ == '__main__':
    start = time.time()

    urls = ["a", "b", "c"]
    tasks = []
    for url in urls:
        task = asyncio.ensure_future( func(url) ) # 创建协程任务
        tasks.append(task)

    loop = asyncio.get_event_loop() # 创建一个事件循环
    
    # 两种实现方式
    # 方式一
    # loop.run_until_complete( asyncio.wait(tasks) ) # 将任务注册到事件循环中
    
    # 方式二
    for task in tasks:
        loop.run_until_complete(task)

    print(time.time() - start)

我们可以看看运行的结果


文章作者: New Ass
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 New Ass !
  目录