Python 中 asyncio 是什么?

一、asyncio是什么

  • python 专门用来写并发代码的库
  • 可以让程序同时处理了多件事

二、为什么要将asyncio用在爬虫/自动化里

  • 当你发送一个请求,服务器相应可能需要1s
  • 如果是同步,你的程序会卡在那里1s
  • 如果是asyncio,程序在等网页返回的这1s内,可以去发另外10个请求

三、核心关键词解释

  • async def (声明该函数为异步函数)
    这个函数里面可能有需要等待的操作,它执行时不会阻塞主程序
python 复制代码
async def get_message():
	pass
  • await(在这里等待,但别卡死)

    此处需要等待网络返回,程序可以先执行别的任务,等这边返回结果了,再继续往下执行

  • asyncio.run() (启动方式)

    异步函数的调用

四、思考:asyncio是否为多线程?

不是,它是单线程,在任务空闲时切换到另一个任务,避免了多线程频繁切换上下文的开销,在处理高并发网络请求时比多线程更高效、更轻量。

五、async with 是什么?

自动化地处理那些"需要耗时申请、又必须安全释放"的资源。

即使你的爬虫中途报错挂了,async with 也会确保在后台悄悄把浏览器进程关掉,不会让内存残留。

六、思考:在爬虫里,为什么我们推荐用 async with httpx.AsyncClient() 而不是每次请求都写 httpx.get()?

因为 async with 可以创建一个 TCP 连接池。 如果你直接 get,每次请求都要经历 三次握手 和 四次挥手,非常耗时。 使用 async with 开启上下文,可以让多个请求复用同一个连接(Keep-Alive),效率提升非常明显,同时它还能保证在爬取结束时,自行关闭连接池

相关推荐
oh,huoyuyan23 分钟前
火车采集器同时运行超多任务运行优化方案
爬虫·火车采集器
梅雅达编程笔记29 分钟前
编程启蒙|Scratch 转 Python 系列第9天:字典/哈希表积木双向对照(AI大模型参数配置表实战)
开发语言·人工智能·python·numpy·pandas
zhz52141 小时前
GIS项目中空间参考转换与MBTiles偏移:问题成因、解法与避坑
python·vue·gis
工业HMI实战笔记1 小时前
【拯救HMI】:低碳制造:自动化技术如何助力企业节能降耗
运维·前端·自动化·交互·制造
KaMeidebaby2 小时前
卡梅德生物技术快报|如何制备单克隆抗体:小众禽类靶点单抗制备实操流程:双载体抗原交叉筛选完整工艺记录
人工智能·python·深度学习·算法·机器学习
乱写代码3 小时前
Pydantic学习--BaseModel
python
fu15935745683 小时前
【边缘计算实战】P1:从零搭建边云任务卸载仿真实验台(Python 可复现)
数据库·python·边缘计算
蜡台3 小时前
通过Gradle脚本声明更改Java变量
android·java·开发语言·python·kotlin·gradle·groovy
shujudang3 小时前
业务闭环视角下的营销自动化(MA)平台选型逻辑
大数据·运维·数据分析·自动化·营销自动化
智能体与具身智能4 小时前
TVA 本质内涵与核心特征(系列)
人工智能·python·智能体视觉