async for

import asyncio
import time

print("\n\n=== 2. 异步模式开始 (请注意观察心跳) ===")

# 这是一个背景任务,模拟 UI 动画或者心跳检测
async def background_heartbeat():
    while True:
        print("   💓 (背景任务) 咚-咚-咚... 程序还活着!")
        await asyncio.sleep(0.3) # 每0.3秒跳动一次

# 异步生成器
async def async_stream():
    for i in range(3):
        print(f"🔄 (生成器内部) 正在用力下载第 {i+1} 个包...")
        # 【挂起】告诉 Python:我要等1秒,这期间你去处理那个“心跳”任务吧
        await asyncio.sleep(1) 
        yield f"📦 包 {i+1} 下载完成"

async def main():
    # 1. 启动背景心跳任务
    task = asyncio.create_task(background_heartbeat())

    start_time = time.time()

    # 2. 开始 Async For 循环
    # 关键点:每次在这里“等”数据的时候,上面的 background_heartbeat 就会插队运行
    async for data in async_stream():
        print(f"✅ 主程序收到: {data}\n")

    # 停止心跳任务
    task.cancel()
    print(f"=== 异步模式结束,总耗时: {time.time() - start_time:.2f}秒 ===")

# 运行
asyncio.run(main())