Python基础入门 Day47:asyncio 初识与异步编程模型

99次阅读
没有评论

共计 886 个字符,预计需要花费 3 分钟才能阅读完成。

随着网络编程与高并发场景的普及,传统同步阻塞模型已无法满足效率要求。Python 从 3.4 开始引入 asyncio 模块,正式支持异步编程。它基于事件循环和协程,为高并发 I/O 密集型任务提供了高效解决方案。

一、什么是异步编程
同步模型下,程序一步一步执行,等待每个操作完成。而异步编程允许程序在等待 I/O 操作完成时切换去执行其他任务,充分利用 CPU 资源,提升执行效率。

二、asyncio 的核心概念

  1. 协程(coroutine):用 async def 定义的函数,返回协程对象。
  2. await:只能在协程中使用,表示等待另一个协程完成。
  3. 事件循环(event loop):调度协程任务的机制,是 asyncio 的心脏。

三、示例:异步延迟任务

import asyncio

async def say_hello(name):
    print(f"{name}:开始 ")
    await asyncio.sleep(2)
    print(f"{name}:结束 ")

async def main():
    await asyncio.gather(say_hello(" 任务 A "),
        say_hello(" 任务 B "),
        say_hello(" 任务 C ")
    )

asyncio.run(main())

程序输出如下,3 个任务“同时”开始,2 秒后同时结束,体现异步并发执行的优势。

四、事件循环机制简述

  • asyncio.run(main()):创建并运行事件循环。
  • asyncio.gather():并发执行多个协程任务。
  • await 表示在等待期间释放 CPU 控制权给其他任务。

五、对比:同步 vs 异步

模型 示例 效率 场景适用
同步 requests.get 简单直观 小任务量
异步 aiohttp.get 高效节能 高并发任务

六、练习建议

  1. 修改之前的 TCP 服务端,尝试使用 asyncio 实现并发连接处理。
  2. 了解 asyncio.create_task()await 的不同使用方式。
  3. 编写一个异步爬虫程序,体验 aiohttp 的效率优势。

异步编程是现代 Python 的一项核心技能,配合 async/await 语法,可以优雅地编写高性能网络应用。明天我们将深入使用 aiohttp 实现异步 HTTP 请求处理。

正文完
 0
评论(没有评论)