协程(Coroutine)是Python中实现异步编程的重要概念,常用于网络请求、数据处理等场景。其核心特点是轻量级并发协作式调度,通过async/await语法实现非阻塞操作。

协程 vs 线程

特性 协程 线程
调度方式 协作式(需主动切换) 强制式(操作系统调度)
开销 低(仅需栈切换) 高(需上下文切换)
适用场景 I/O密集型任务 CPU密集型任务
📌 示例 async def定义的函数 threading.Thread

协程核心概念

  1. 事件循环(Event Loop)
    管理协程的调度,通过asyncio库实现

    事件循环示意图

  2. 异步IO(Async IO)
    基于协程的网络请求方式,如aiohttp
    了解更多 → /zh/articles/python_asyncio_tutorial

  3. 任务调度(Task Scheduling)
    通过asyncio.create_task()创建并发任务

    协程调度流程

协程应用场景

  • 网络爬虫(如使用aiohttp并发请求)
  • 数据库操作(如asyncpg异步查询)
  • 游戏开发(如处理游戏逻辑与渲染的异步交互)
  • 实时数据处理(如流式计算中的非阻塞处理)

协程使用示例

import asyncio

async def fetch_data():
    print("开始获取数据")
    await asyncio.sleep(1)  # 模拟I/O操作
    print("数据获取完成")

async def main():
    await fetch_data()

# 启动事件循环
asyncio.run(main())

扩展阅读

📌 注意:协程需要配合async/await语法使用,且依赖事件循环驱动。在实际开发中,建议使用asyncio库进行管理。