当前位置: 首页 > news >正文

Python Async 编程快速入门 | 超简明异步协程指南

async 是 Python 用于 异步编程(asynchronous programming) 的语法关键字。

它主要用于 提升程序执行效率,尤其在执行 I/O 密集型任务(如网络请求、数据库查询、文件读写)时,可以在等待的同时做别的事。


一、为什么要用 Async?(异步的意义)

在编写程序时,我们经常遇到这样的情况:
• 向服务器请求数据,需要等待
• 访问数据库,速度慢
• 下载文件或爬虫抓取,等待时间长

传统的同步程序会 阻塞当前线程,比如这样:

def get_data():time.sleep(3)print("数据到手!")

👉 那么在这3秒内,程序 啥也干不了。

异步编程就像是:先下单,等快递的过程中干点别的事!

一句话理解

async def func(): ...

表示:这个函数是“异步函数”,运行它不会立刻执行,而是返回一个协程对象(coroutine),需要 await 来真正运行它。


二、核心语法:只需记住两个关键词

1. async def 定义异步函数

async def say_hello():...
  • 这不是普通函数,而是 协程函数(Coroutine Function)
  • 调用它不会立刻执行,而是返回一个协程对象

2. await 调用其他协程

await say_hello()
  • 只能在 async 函数中使用 await
  • 让出控制权,等待这个任务完成再继续

三、快速示例:Hello Asyncio

import asyncioasync def say_hello():print("Hello")await asyncio.sleep(1)  # 模拟等待1秒print("World")# 启动 async 函数
asyncio.run(say_hello())

输出:

Hello
(等待1秒)
World

你看,程序并没有卡死,而是 在等待中还能处理其他异步任务!


四、多任务同时运行


import asyncioasync def task(name, delay):print(f"{name} 开始")await asyncio.sleep(delay)print(f"{name} 结束")async def main():await asyncio.gather(task("任务A", 2),task("任务B", 1))asyncio.run(main())

输出顺序:

任务A 开始
任务B 开始
任务B 结束
任务A 结束

✔️ 多个任务并发运行了,时间效率提高了!


五、应用场景有哪些?

  1. 🔁 爬虫:多个网页同时抓取
  2. 🧠 大模型:异步调用 API
  3. 🗂️ 文件处理:边下载边处理
  4. 💬 Chatbot:用户对话响应不卡顿
  5. 🌐 Web 框架:FastAPI 就是 async 驱动

六、常见搭配

  1. async def:定义一个异步函数
  2. await:让你可以等待另一个协程
  3. asyncio.run(…):是启动协程的入口

七、延伸阅读 & 推荐工具

  • 官方文档:https://docs.python.org/zh-cn/3/library/asyncio.html
  • 三方库支持:
    • aiohttp:异步 HTTP 客户端
    • FastAPI:基于 async 的高性能 Web 框架
    • aiomysql、aioredis:异步数据库驱动

异步编程一开始看起来有点拗口,但只要掌握 async 和 await,很多 I/O 密集型任务就能大大提速!

如果你有任何问题,欢迎评论区交流 👇👇👇

相关文章:

  • Prism框架实战:WPF企业级开发全解
  • 从萌芽到领航:广州华锐互动的 AR 奋进之路​
  • oracle内存参数调整
  • 免安装一键修复网络诊断 + 权限修复!打印机共享错误工具适配 Win7/10/11
  • 集群聊天服务器---muduo库(3)
  • PHP Protobuf 手写生成器,
  • Redis集群实现方式
  • 鸿蒙HarmonyOS 关于图片、视频的选择详解
  • react ant-design通用页面自适应适配不同分辨率屏幕的方法工具类
  • 2025年消防设施安全员考试新增了哪些内容?重点考什么设备?
  • AiPy实战(5):效率革命!5分钟构建行业分析报告
  • SpringBoot -- 整合Junit
  • flink同步kafka到paimon,doris加速查询
  • 知名流体控制解决方案供应商“永盛科技”与商派ShopeX达成B2B商城项目合作
  • 【LeetCode】滑动窗口相关算法题
  • Re:从零开始的文件分配方式(考研向)
  • 深度学习实战:案例解析
  • 因果森林(R包grf)-治疗异质性探索
  • 三阶落地:腾讯云Serverless+Spring Cloud的微服务实战架构
  • 人工智能训练师——智能语音识别ASR