##### asyncio.事件循环 - 事件循环是协程运行环境 - [[asyncio.run()]] - [[class asyncio.Runner]] ```python import asyncio # 第一个协程 async def task_coro1(): print('正在运行第一个协程') await asyncio.sleep(1) # 第二个协程 async def task_coro2(): print('正在运行第二个协程') await asyncio.sleep(1) # 结构1 asyncio.run(task_coro1()) # 创建第一个事件循环运行协程 asyncio.run(task_coro2()) # 创建第二个事件循环运行协程 # 这种方法的成本很高,因为必须为每个协程创建并关闭新的事件循环 # 结构2 async def main(): # 创建主协程 await task_coro1() # 等待第一个协程 await task_coro2() # 等待第二个协程 asyncio.run(main()) # 创建一个事件循环运行协程 # 必须使用新的包装协程作为执行所有协程的入口点 # 结构3 with asyncio.Runner() as runner: # 事件循环上下文管理器 runner.run(task_coro1()) runner.run(task_coro2()) # 每个协程都在同一个事件循环中执行,并且直到第一次调用 run() 才会创建所使用的循环 ```