PYTHON GIL锁机制在同一个process内GIL是一种锁允许任何时候只有一个线程控制 Python 解释器。在I/O 等待场景会释放GIT锁。GIL 的存在是为了解决竞态问题防止多个线程彼此大家。asyncio 异步asyncio 使用单一线程来处理多个任务避免了大量上下文切换带来的开销Coroutines 把普通函数定义为协程函数 代表该函数可以暂停/恢复Event loop 事件循环负责管理执行CoroutinesTasks 协程具体的对象 通过asyncio.create_task()调度await 暂停协程的执行协程创建之后不会自动调用。asyncio.run来运行适合需要大量等待的小任务场景asyncio.create_task()让函数立即进入队列不是立即执行等待其他函数交出控制权create_task() 解除等待关系把协程交给事件循环管理只要存在 await 的让出点多个任务就可以交叉推进await a() await b() # 交叉 ta create_task(a()) tb create_task(b()) await ta await tbasyncio.to_threadasyncio.to_thread 让同步阻塞代码在另一个线程运行从而保证事件循环线程不被阻塞。async def main(): print(start) asyncio.create_task( asyncio.to_thread(fetch_data) ) print(end)写法函数何时执行当前协程是否继续await to_thread()立即在线程否等结果create_task(to_thread())立即在线程是检测判断你在 async 函数里要调用一个函数 F│├─ F 是 async 协程函数│ ││ ├─ 是│ │ ││ │ ├─ 需要等 F 的结果│ │ │ ├─ 是 → await F()│ │ │ └─ 否 → create_task(F())│ │ ││ │ └─结束│ ││ └─ 否F 是同步阻塞函数│ ││ ├─ 需要等 F 的结果│ │ ├─ 是 → await asyncio.to_thread(F)│ │ └─ 否 → create_task(asyncio.to_thread(F))│ ││ └─结束