⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Python asyncio 异步编程

学习asyncio · 难度:高级 · +15XP

Python asyncio 异步编程

asyncio 是 Python 3.4 引入的标准库,用于编写单线程并发代码。它使用 async/await 语法,基于事件循环(Event Loop)实现协程的调度。异步编程特别适合 I/O 密集型任务,如网络请求、文件读写、数据库操作等。同一个线程可以在等待 I/O 的同时处理其他任务,大幅提升程序的并发性能。

协程基础

协程(Coroutine)是使用 async def 定义的函数:

import asyncio

# 定义一个协程函数 async def hello(): print('Hello') await asyncio.sleep(1) # 模拟异步等待 print('World')

# 运行协程 asyncio.run(hello())

并发执行多个任务

import asyncio
import time

async def fetch_data(url, delay): print(f'开始请求: {url}') await asyncio.sleep(delay) # 模拟网络请求 print(f'完成请求: {url}') return f'{url} 的数据'

async def main(): start = time.time()

# 并发执行多个任务 results = await asyncio.gather( fetch_data('api/users', 2), fetch_data('api/products', 1), fetch_data('api/orders', 1.5), )

elapsed = time.time() - start print(f'结果: {results}') print(f'总耗时: {elapsed:.2f}秒') # 约2秒,而非4.5秒

asyncio.run(main())

创建任务

import asyncio

async def worker(name, delay): await asyncio.sleep(delay) print(f'{name} 完成工作') return f'{name} 结果'

async def main(): # 创建 Task 对象 task1 = asyncio.create_task(worker('A', 2)) task2 = asyncio.create_task(worker('B', 1))

# Task 可以独立运行,稍后获取结果 result1 = await task1 result2 = await task2

print(result1, result2)

asyncio.run(main())

asyncio 关键概念速查

概念/函数说明
async def定义协程函数
await等待协程执行完成
asyncio.run()运行顶层协程(Python 3.7+)
asyncio.gather()并发执行多个协程
asyncio.create_task()将协程包装为 Task 对象
asyncio.sleep()异步等待(不阻塞线程)
Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 152 篇
0 完成
🔥 0