Python异步编程进阶:深入探索asyncio高级特性
异步上下文管理器 (async with)
异步上下文管理器允许你在异步环境中管理资源,比如数据库连接或文件操作。
基本实现
class AsyncDatabaseConnection:async def __aenter__(self):print("建立数据库连接")await asyncio.sleep(0.5) # 模拟连接建立return selfasync def __aexit__(self, exc_type, exc, tb):print("关闭数据库连接")await asyncio.sleep(0.3) # 模拟连接关闭async def execute(self, query):print(f"执行查询: {query}")await asyncio.sleep(0.2)return f"{query}的结果"async def main():async with AsyncDatabaseConnection() as db:result = await db.execute("SELECT * FROM users")print(result)asyncio.run(main())
实际应用:异步文件操作
import aiofilesasync def async_file_ops():async with aiofiles.open('data.txt', mode='w') as f:await f.write('Hello, async world!')async with aiofiles.open('data.txt', mode='r') as f:content = await f.read()print(content)
异步生成器 (async for)
异步生成器允许你异步地生成和消费数据流。
创建异步生成器
async def async_data_stream(n):for i in range(n):await asyncio.sleep(0.5) # 模拟异步数据获取yield iasync def consume_stream():async for item in async_data_stream(5):print(f"处理数据项: {item}")await asyncio.sleep(0.2) # 模拟数据处理