《Python高级编程》6.3 结构化并发与调试
对比 asyncio.TaskGroup 与 anyio 4.15.1 的结构化并发,讲清异常组如何打包与传播、asyncio.timeout 的 reschedule 语义,以及 PYTHONASYNCIODEBUG 慢回调警告等调试手段,附实测输出。
tag
对比 asyncio.TaskGroup 与 anyio 4.15.1 的结构化并发,讲清异常组如何打包与传播、asyncio.timeout 的 reschedule 语义,以及 PYTHONASYNCIODEBUG 慢回调警告等调试手段,附实测输出。
从 CPython 源码出发讲清 Task 与 Future 的关系:Future 的三态机、cancel() 把 CancelledError 注入到哪个挂起点、cancelling() 计数与 uncancel() 的语义、shield 的保护边界,并附取消时序实测。
用 selectors 手写一个最小事件循环,再对照 CPython 的 BaseEventLoop._run_once,讲清就绪队列与定时器队列的双队列设计、call_soon 与 call_later 的调度优先级,以及本轮新注册回调为何延后,并附实测执行顺序。
create_task 立刻调度、gather 要 await 才跑。本节对比 gather 与 TaskGroup 的错误处理:gather 不取消兄弟任务,TaskGroup 会取消并用 ExceptionGroup 汇总;再讲 asyncio.timeout、shield、CancelledError 的 BaseException 语义、Queue、Semaphore 与 Runner。
协程函数调用后只返回一个协程对象,不 await 就静默不执行。本节从 async def 与 await 的语义讲起,用真实计时证明单线程并发,再用 time.sleep 与 asyncio.sleep 的对比说明阻塞调用如何卡死事件循环,并厘清 get_running_loop 与 get_event_loop 的差异。
Python asyncio 完整指南:从零理解协程、事件循环、Task 调度,掌握 asyncio.create_task, asyncio.gather, Semaphore 限流等核心 API。通过爬虫、Web 服务、数据库访问三大实战场景,构建高并发 Python 程序。
深度解析 Python 并发模型:GIL 内部机制与绕过策略、asyncio 事件循环与 Task 调度、async/await 最佳实践、multiprocessing 多核利用、concurrent.futures 线程池/进程池、cProfile/py-spy/flamegraph 性能分析。附带可运行代码与工作负载选型决策树。