异步函数应用

正常函数

正常函数,一次执行到底, 中 间 不 能 中 断 中间不能中断

def norm_func():
	print("this is normal function.")
	print("can't interrupt until complete...")

异步函数

碰到IO操作,可以暂时挂起,去执行其他的 异 步 函 数 异步函数 ,待IO操作完成后,立即再次切换回来。

await,声明程序的挂起,去执行其他的异步程序,只能跟异步程序/__await__属性的对象

import asyncio
import requests

async def get():
    print("start to request url...")
    r = requests.get("https://www.baidu.com/",headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"})
    #模拟IO
    await asyncio.sleep(10)

    return r

async def func1():
    print("func1 is running...")

    #异步,等待IO完成
    #在IO期间,去执行其他的异步函数
    #一旦IO完成,立即切换回来
    r = await get()

    print("func1 continue running...")
    print("response content:",r.status_code)

async def func2():
    print("func2 is running...")

    #等待IO 完成
    await  asyncio.sleep(5)

    print("func2 continue running...")

if __name__ == "__main__":
    #创建循环
    loop = asyncio.get_event_loop()

    #创建任务列表
    task = [asyncio.ensure_future(i()) for i in (func1,func2)]

    #执行任务,指导完成
    loop.run_until_complete(asyncio.wait(task))

    #关闭循环
    loop.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

laufing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值