工欲善其事,必先利其器——协程(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)

我们可以看看运行的结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值