最新最详细的python中的asyncio的async和await的使用,代码实例

官方文档:

https://docs.python.org/zh-cn/3/library/asyncio.html

1:简单的协成体验

import asyncio
import time

async def a():
	# 这里的await是将主协成挂起,去执行其他异步程序或含有"__await__"的对象
    await asyncio.sleep(2)
    await b()
    print("a协成结束")

async def b():
    for i in range(10,20):

        # await asyncio.sleep(1)
        print(i)

asyncio.run(a())

以上代码执行流程
在这里插入图片描述

2:并发协成的使用

import asyncio

async def a(aa):
    
    print(aa)
    await asyncio.sleep(2)
    print("hello")

async def b():

    print("b_nihao")
    await asyncio.sleep(3)
    print("b_hello")

loop = asyncio.get_event_loop()
tasks = [a(66), b()]
loop.run_until_complete(asyncio.wait(tasks))

可以打印出来看看是如何跳转执行的,是一个并发的行为.

3:母子协成

import asyncio

from grpclib.client import Channel

# generated by protoc
from .helloworld_pb2 import HelloRequest, HelloReply
from .helloworld_grpc import GreeterStub

# 启动一个main()函数的协成,当有新请求过来,在这个main协成下面再启动一个协成,提高吞吐量
async def main():
    async with Channel('127.0.0.1', 50051) as channel:
        greeter = GreeterStub(channel)

        reply = await greeter.SayHello(HelloRequest(name='Dr. Strange'))
        print(reply.message)

if __name__ == '__main__':
    asyncio.run(main())
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值