python教程技术文章
-
QueueHandler 能把业务线程与日志写盘拆开,但队列满载、监听线程退出和异常日志递归仍会让系统失去可观测性。本文从负载约束、方案取舍和验收指标出发,给出一套可落地的降级做法。164 收藏 -
用一个可运行的消息格式化例子拆解 functools.singledispatch:默认实现、register 注册、按第一个参数类型 dispatch,以及继承匹配和调试边界。161 收藏 -
用 collections.deque 的 maxlen、append 和 popleft 实现只保留最近事件的定长窗口,并核对窗口统计、空队列和并发边界。159 收藏 -
asyncio.Queue 适合在协程之间传递有界任务,但只创建队列并不能自动解决背压和停机。本文用真实的生产者、消费者和关闭信号示例,说明 maxsize、put、task_done、join 的配合边界,以及如何让队列在停止时不丢任务。152 收藏 -
文章 · python教程 | 3天前 | 并发 · 消息队列 · 异步编程 · Python教程 · 性能稳定性 · Python 消费者 超时 Queue asyncio 哨兵 asyncio.Queue task_done
asyncio.Queue 的任务处理结束,不等于消费者协程会自动结束。本文用固定数量哨兵、task_done()、gather() 和 wait_for() 组成可验证的优雅停机流程,说明有界队列、异常回收与超时检查的边界。151 收藏 -
文章 · python教程 | 3天前 | 数据校验 · Python教程 · dataclasses · 类型标注 · Python 数据类 dataclasses InitVar __post_init__
dataclasses.InitVar 是只参与初始化、不保存为实例字段的伪字段。本文用配置参数注入和输入校验示例,说明它如何进入 __post_init__、为何不出现在 fields() 与 asdict() 中,以及序列化时应如何设计。147 收藏 -
Python 日志重复打印通常不是 logger 调用了两次,而是同一条记录沿父子层级交给多个 handler。本文用最小示例拆开 propagate、handler 和配置初始化顺序,给出可复现的排查与修复方法。139 收藏 -
itertools.batched 会惰性地把迭代器分成固定大小的元组,但默认允许最后一批不足 n。本文用订单编号批处理示例说明 strict=True 何时抛出 ValueError、如何选择补齐或拒绝,以及怎样验收没有静默漏数据。133 收藏 -
Python 项目里相对路径不稳定,通常不是 pathlib 的问题,而是把当前工作目录 cwd 和脚本位置 __file__ 混在了一起。本文用配置文件读取与 pytest 临时目录示例,拆开两种路径基准,并给出可验收的写法。131 收藏 -
argparse 默认解析器遇到多个位置参数和选项交错时,参数归属容易让人误判。本文用 parse_intermixed_args 对比普通 parse_args,说明它的工作边界、子解析器限制和互斥组兼容性。114 收藏 -
Python 的 zipfile.Path 适合在不解压的情况下浏览 ZIP 目录和读取文件,但它不会替调用者清理归档内的路径。本文用目录判断、文件读取和安全落盘三个场景,拆开 Path 的使用边界、路径遍历校验与 ZipFile.extractall 的差异。113 收藏 -
TypeIs 和 TypeGuard 都能让类型检查器理解自定义谓词,但它们对 True、False 分支以及不变容器的处理并不相同。用可运行示例拆开选择边界。104 收藏 -
Python 3.14 为并发任务映射增加 buffersize 参数。本文用一个可运行的批处理例子说明它如何限制未产出结果的任务数量,并拆开结果顺序、异常传播、chunksize 与停机回收的边界。101 收藏