在现代 Python 开发中,异步编程已成为提升程序性能、处理高并发任务的关键技术。而 asyncio 是 Python 标准库中用于编写并发代码的核心模块,它基于 事件循环(Event Loop) 和 async/await 语法,使得开发者能以接近同步代码的风格编写高效的异步程序。

asyncio 是 Python 3.4 引入的标准库,用于支持 协程(Coroutine)、任务调度 和 异步 I/O 操作。它通过一个中心化的 事件循环 来管理多个协程的执行,避免了传统多线程编程中的复杂性和资源开销。
使用 asyncio,你可以在单线程中并发地处理成百上千个 I/O 密集型任务(如网络请求、文件读写等),而不会阻塞主线程。
要使用 asyncio,首先需要理解两个关键字:
async def:定义一个协程函数,调用它会返回一个协程对象,而不是立即执行。await:用于在协程内部“等待”另一个协程完成,期间控制权交还给事件循环,允许其他任务运行。import asyncioasync def say_hello(name): print(f"Hello, {name}!") await asyncio.sleep(1) # 模拟异步操作(如网络请求) print(f"Goodbye, {name}!")async def main(): await say_hello("Alice") await say_hello("Bob")# 启动事件循环asyncio.run(main())运行上述代码,你会看到先输出 “Hello, Alice!”,等待 1 秒后输出 “Goodbye, Alice!”,再等待 1 秒输出 Bob 的问候。这是因为我们使用了 await 顺序执行,没有并发。
要让多个协程同时运行,我们需要将它们包装成 任务(Task) 并提交给事件循环:
import asyncioasync def say_hello(name): print(f"Hello, {name}!") await asyncio.sleep(1) print(f"Goodbye, {name}!")async def main(): # 创建两个任务 task1 = asyncio.create_task(say_hello("Alice")) task2 = asyncio.create_task(say_hello("Bob")) # 等待所有任务完成 await task1 await task2asyncio.run(main())这次你会发现,“Hello, Alice!” 和 “Hello, Bob!” 几乎同时打印,总共只用了约 1 秒钟!这就是 异步并发 的威力。
事件循环是 asyncio 的核心。它负责:
在 Python 3.7+ 中,推荐使用 asyncio.run() 来启动事件循环,它会自动创建、运行并清理循环,避免手动管理的复杂性。
注意:time.sleep() 是阻塞操作,会冻结整个事件循环!应使用 asyncio.sleep() 替代,它是非阻塞的异步等待。
# ❌ 错误做法async def bad_example(): time.sleep(2) # 阻塞整个事件循环!# ✅ 正确做法async def good_example(): await asyncio.sleep(2) # 非阻塞,允许其他任务运行通过本教程,你已经掌握了 Python asyncio 的基本用法、异步编程 的核心思想、async/await 语法以及 事件循环 的工作机制。这些知识是构建高性能 Python 应用的基础。
记住:异步不是万能的,它最适合 I/O 密集型任务;对于 CPU 密集型任务,仍需考虑多进程或线程池。
现在,你可以尝试用 asyncio 重构你的网络爬虫、API 客户端或聊天机器人,体验异步带来的性能飞跃!
本文由主机测评网于2025-12-08发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025124560.html