Python Asyncio 全面指南

Python asyncio 全面指南

asyncio 是 Python 用于编写并发代码的库,使用 async/await 语法。它特别适合 I/O 密集型和高并发应用,如网络服务、网络爬虫等。

核心概念

1. 事件循环 (Event Loop)

  • 所有异步程序的核心
  • 负责调度协程、处理回调、执行网络I/O等
  • 每个线程只有一个运行中的事件循环
import asyncio

async def main():
    print('Hello')
    await asyncio.sleep(1)
    print('World')

# Python 3.7+
asyncio.run(main())

2. 协程 (Coroutine)

  • 使用 async def 定义的函数
  • 通过 await 挂起执行,让出控制权
async def fetch_data():
    print("开始获取数据")
    await asyncio.sleep(2)  # 模拟I/O操作
    print("数据获取完成")
    return {
   "data": 123}

3. 任务 (Task)

  • 用于调度协程的执行
  • 一个协程被包装成任务后才会被事件循环调度
async def main():
    task = asyncio.create_task(fetch_data())
    print("任务已创建")
    await task  # 等待任务完成
    print(f"结果: {
     task.result()}")

基础用法

1. 运行多个协程

async def say_after(delay, what):
    await asyncio.sleep(delay)
    print(what)

async def main():
    print(f"开始于 {
     time.strftime('%X')}")
    
    # 顺序执行
    await say_after(1, 'hello')
    await say_after(2, 'world')
    
    # 并发执行
    task1 = asyncio.create_task(say_after(1, 'hello'))
    task2 = asyncio.create_task(say_after(2, 'world'))
    await task1
    await task2
    
    

你可能感兴趣的:(python,开发语言,服务器)