python教程技术文章
-
通过一个异步仓储接口的类型报错,讲清 Protocol 中 async def 的正确写法、Awaitable 双层嵌套、参数形状、泛型协议与运行时检查边界。363 收藏 -
dataclasses.replace 会调用数据类的 __init__ 重建对象,而 InitVar 不保存在实例字段中。本文讲清无默认值时如何显式传参、有默认值时的回退行为、init=False 字段重算,以及何时应改用真实字段或自定义复制方法。381 收藏 -
解释 importlib.resources.as_file 返回路径的生命周期:需要从 zip 等容器提取时,临时文件或目录会在退出上下文后清理;并给出块内使用、ExitStack 延长借用期和复制持久化三种写法。318 收藏 -
sqlite3.Connection.backup 的 progress 回调会直接给出 remaining 和 total。本文用可复用记录器计算剩余页数、完成比例与单轮增量,并解释 pages、status、并发写入和进度回退边界。264 收藏 -
Python mmap 不会把整个映射一次复制进堆,但超大文件仍可能受虚拟地址空间限制。本文给出跨平台分段映射配方:对齐 offset、限定逻辑窗口、拼接跨窗记录、限制超长行,并正确处理空文件、提前停止和资源释放。146 收藏 -
用一个长度前缀二进制报文示例,说明 Python memoryview 如何复用底层缓冲区、配合 struct.unpack_from 解析头部,并处理复制边界、可写性和生命周期。225 收藏 -
文章 · python教程 | 2天前 | 并发控制 · Python教程 · asyncio · 虚假唤醒 wait_for Python asyncio asyncio.Condition 异步同步
asyncio.Condition.wait() 返回后共享状态可能仍不满足要求。本文从多消费者空队列故障出发,说明 wait_for(predicate) 如何在锁内重复检查条件,并给出通知、超时、取消和代码审查的完整写法。478 收藏 -
讲清 Python ExceptionGroup 的 derive、split 与 subgroup 如何协作,帮助自定义异常组保留请求标识、消息、notes 和异常链上下文。417 收藏 -
文章 · python教程 | 2天前 | 异常处理 · 并发编程 · Python教程 · asyncio · asyncio 结构化并发 ExceptionGroup except* Python TaskGroup
TaskGroup 会在兄弟任务取消并完成收尾后,把非取消异常组合成 ExceptionGroup。本文演示 except* 分类处理、取消边界与 gather 的选择差异。208 收藏 -
文章 · python教程 | 2天前 | 并发编程 · 工程实践 · Python教程 · 多进程日志 QueueListener multiprocessing.Queue RotatingFileHandler Python QueueHandler
Python 多进程不能依赖多个 FileHandler 安全写入同一文件。本文用 multiprocessing.Queue、QueueHandler 和 QueueListener 建立单写入者结构,给出可复用完整示例,并说明轮转、队列容量、LogRecord 序列化、multiprocessing 内部日志与安全关闭顺序。186 收藏 -
Pydantic 部分更新不能用 None 判断字段是否缺失。本文用 model_fields_set 与 model_dump(exclude_unset=True) 保留显式 null、排除未提供字段,并梳理 Pydantic v2 的 model_dump、model_copy 与回归测试。399 收藏 -
pytest Fixture 的 scope 决定资源被缓存和复用多久。本文从测试隔离、初始化成本和共享状态风险出发,对比五种作用域,并给出 session 基础设施配合 function 事务的实用方案。341 收藏 -
从一次文件下载路径穿越排查出发,给出 pathlib 的安全拼接模板:拒绝绝对路径,解析根目录与候选路径,再用 relative_to 验证目录归属,并说明符号链接、strict 参数和竞态边界。463 收藏 -
multiprocessing 处理大对象变慢,瓶颈常在 pickle 序列化、管道传输、反序列化和内存复制,而非计算本身。本文给出量化方法,并用小任务描述符、批量分块和 SharedMemory 改写数据通道。478 收藏 -
Python import 很慢时,应先用 -X importtime 区分模块自身耗时与包含子依赖的累计耗时,再排查模块顶层的文件 I/O、网络连接、插件扫描和重对象构造。本文给出轻量 __init__、函数内 import、按需初始化及复测方法,并说明延迟导入只是转移成本。292 收藏