python协程 asyncio 的认识

import time
import asyncio

async def countdown(number,n):
    while n > 0:
        print('T-minus', n, '({})'.format(number))
        await asyncio.sleep(1)
        n -= 1
#方式一
# start = time.time()
# loop = asyncio.get_event_loop()
# tasks = [
#         asyncio.ensure_future(countdown('A', 2)),
#         asyncio.ensure_future(countdown('B', 3))
#     ]
#
# loop.run_until_complete(asyncio.wait(tasks))

方式二

def run():
    loop = asyncio.get_event_loop()
    # tasks = [
    #     asyncio.ensure_future(countdown('A', 2)),
    #     asyncio.ensure_future(countdown('B', 3))
    # ]
    # 下面这种创建任务的形式等同于上面的tasks 即,asyncio.ensure_future 与 loop.create_tasks相等
    tasks = [
        loop.create_task(countdown('A', 2)),
        loop.create_task(countdown('B', 3))
    ]
    loop.run_until_complete(asyncio.wait(tasks))
    loop.close()
if __name__ == '__main__':    
    run()

协程的使用,也是针对任务,即函数功能而言。对一些阻塞的函数,可以使用协程并发方式,提高效率。并发必须注册函数,即使用create_tasks, 或ensure_future ,不用不会有并发。协程的优点就是,完全由用户自己控制,这一点不像线程,线程开启,运行怎么样是不受用户控制的。同样,不耗资源,至始至终,都是一个线程在运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值