当前位置: 首页 > 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 密集型任务就能大大提速!

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

http://www.lqws.cn/news/544555.html

相关文章:

  • C++常用算法解析:sort、find、for_each、copy
  • 阶段二开始-第一章—8天Python从入门到精通【itheima】-116节(封装)
  • cuda编程笔记(5)--原子操作
  • UI前端与数字孪生结合案例分享:智慧零售的可视化解决方案
  • 北京燃气集团管道腐蚀智能预测实践:LSTM算法驱动能源设施安全升级
  • VSCode中创建和生成动态库项目
  • 智能呼叫系统五大核心模式解析
  • 使用mitmdump实现高效实时抓包处理:从原理到实践
  • 技术博客:如何用针孔相机模型理解图像
  • 基于Redis分布式的限流
  • 一款专业的顽固软件卸载工具
  • ubuntu下利用Qt添加相机设备并运行arm程序
  • GO 语言学习 之 变量和常量
  • 神经形态计算与人工智能的融合:从生物启发到智能跃迁的IT新纪元
  • 本地部署Dify+Ragflow及使用(一)
  • PHP语法基础篇(六):数组
  • 通达信 稳定盈利多维度趋势分析系统
  • 鸿蒙OS开发IoT控制应用:从入门到实践
  • 概述-2-MySQL安装及启动-1-Dcoker安装MySQL
  • vue将页面导出pdf,vue导出pdf ,使用html2canvas和jspdf组件
  • Jmeter并发测试和持续性压测
  • 手机屏亮点缺陷修复及相关液晶线路激光修复原理
  • 利用云雾自动化在智能无人水面航行器中实现自主碰撞检测和分类
  • UI前端大数据处理实战技巧:如何有效应对数据延迟与丢失?
  • PILCO: 基于模型的高效策略搜索方法原理解析
  • HarmonyOS 5智能单词应用开发:记忆卡(附:源码
  • JVM 的 Dump分析以及 GC 日志
  • Vulkan模型查看器设计:相机类与三维变换
  • 【Python数据库】Python连接3种数据库方法(SQLite\MySQL\PostgreSQL)
  • 人工智能-基础篇-4-人工智能AI、机器学习ML和深度学习DL之间的关系