Python3.7 高级编程之 async/await asyncio 初识

在之前的Python版本中,开发者在Python要开启一个协程需要借助yeild,或者其他库如gevent、twisted等,还是比较麻烦的,在后来Python 引入async/await之后,开启协程就变得简单起来。

初识async/await协程
# 携程初步
import asyncio

async def main():
    print('hello')
    await asyncio.sleep(1)
    print('world')

# 运行asyncio程序
asyncio.run(main())

这里我们需要知道一个知识点:什么是可等待对象?
可等待对象:如果一个对象可以在await语句中使用,那么它就是可等待对象。
Python 可等待对象的三种主要类型:协程、任务、Future

协程作为可等待对象
import asyncio
import time

# Python 协程属于可等待对象,因此可以在其他协程中被等待 Python异步非阻塞雏形
async def nested():
    time.sleep(2)
    # await asyncio.sleep(2)
    print('我是异步内的任务,我已经完成了')
    return 45

async def main():
    # task = asyncio.create_task(nested())
    # await task # 它会等待任务完成返回后 往下执行,如果在Python中想完成异步非阻塞 就需要先开启任务,然后执行其他操作,在某个地方等待task完成后返回 并退出
    print('我会不会先出现...')
    # nested()
    print(await nested())

asyncio.run(main())
task 任务作为可等待对象
import asyncio
import time

# Python asyncio任务 被用来设置日程以便 并发执行协程
async def nested():
    return '我是返回值'

async def main():
    task = asyncio.create_task(nested())

    print(await task)

asyncio.run(main())

至于Future作为可等待对象的后面会单独拿出来讲,这里先了解一下Future是可以在await语句中使用即可,顺便说一下,Future也是Python实现异步的基础

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haeasringnar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值