async的使用方法

async意思就是异步,用它来实现协程再好不过了

async def demo1():
    print("start1")
    print("end1")

async def demo2():
    print("start2") 
    print("1")
    print("2")
    print('end2')

c = demo1()
d = demo2()

函数执行结果

sys:1: RuntimeWarning: coroutine 'demo1' was never awaited
sys:1: RuntimeWarning: coroutine 'demo2' was never awaited

说是没有等待
async函数可以用send来运行,也可以使用await来运行

send运行结果

start1
end1
Traceback (most recent call last):
  File "/home/python/Desktop/pytest/flask3/laowang.py", line 91, in <module>
    c.send(None)
StopIteration

只能打印函数1的内容,还会报StopIteration错,使用try捕获异常

    c = demo1()
    try:
        c.send(None)
    except StopIteration:
        pass

    d = demo2()
    try:
        d.send(None)
    except StopIteration:
        pass

        print(c)
        print(d)

这样就可以执行两个函数

start1
end1
start2
a
b
end2
<coroutine object demo1 at 0x7f1b19296ba0>
<coroutine object demo2 at 0x7f1b19296d00>

但是他的运行结果还是从上到下来运行,达不到交替运行的目的

这时候就可以使用swait了,在函数中见加上swait,后面跟上要执行的函数

async def demo1():

    print("C1 start")
    await demo2()
    print("C1 end")

则会时候就起到了交替执行的效果,await和yield效果差不多,让当前函数等待,执行他后面的传入的函数

C1 start
start2
a
b
end2

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值