python教程技术文章
-
multiprocessing 处理大对象变慢,瓶颈常在 pickle 序列化、管道传输、反序列化和内存复制,而非计算本身。本文给出量化方法,并用小任务描述符、批量分块和 SharedMemory 改写数据通道。478 收藏 -
文章 · python教程 | 2星期前 | 并发控制 · Python教程 · asyncio · 虚假唤醒 wait_for Python asyncio asyncio.Condition 异步同步
asyncio.Condition.wait() 返回后共享状态可能仍不满足要求。本文从多消费者空队列故障出发,说明 wait_for(predicate) 如何在锁内重复检查条件,并给出通知、超时、取消和代码审查的完整写法。478 收藏 -
Python pathlib 复制符号链接可选择复制所指内容或重建链接。本文通过隔离示例说明 follow_symlinks、相对目标与对象类型判断,并给出旧版本和权限注意事项。478 收藏 -
用一个Jinja通知卡片项目说明StrictUndefined怎样暴露模板错拼与缺失变量,区分必填、可选、None和默认值,避免渲染失败被空白输出掩盖。477 收藏 -
Python pathlib.Path.is_relative_to 可以判断一个路径是否位于指定目录下,但它是词法判断,不会访问文件系统,也不会自动解析符号链接或 ..。本文结合目录边界场景说明用法、误区和需要 resolve 的情况。473 收藏 -
用 ContextVar 保存请求范围内的 request_id,再通过 logging.Filter 统一写入 LogRecord。本文给出 asyncio 并发示例,并说明 token 恢复、默认值、Handler 过滤器和后台任务边界。471 收藏 -
Pydantic v2的before适合原始输入规范化,after适合类型明确后的业务约束。通过严格整数请求示例说明字段限制、返回值、权限分工与错误日志。469 收藏 -
Jinja 子模板重写 block 后,父区块内容不会自动保留;需要追加时在子区块中调用 super()。本文从覆盖现象出发,说明 super、extends、super.super() 和 scoped 的边界,并给出一份排查清单。468 收藏 -
遇到遗留命令或 POSIX 系统传来的非 UTF-8 环境变量时,Python 的 os.environb 可以保留原始 bytes。本文按触发场景、支持检查、读取流程和显式解码说明怎样安全接入,并梳理它与 os.environ 的同步关系及失败处理。464 收藏 -
从一次文件下载路径穿越排查出发,给出 pathlib 的安全拼接模板:拒绝绝对路径,解析根目录与候选路径,再用 relative_to 验证目录归属,并说明符号链接、strict 参数和竞态边界。463 收藏 -
Python functools.cached_property 的缓存写在实例同名属性上。修改源数据后删除该属性,下一次读取就会重新计算;本文同时说明 __dict__、__slots__ 与并发访问边界。463 收藏 -
用 pathlib.Path.rglob 递归查找 Python 文件时,结合 Path.parts 排除 build、dist 和缓存目录,避免误删同名路径并保持结果稳定。461 收藏 -
Python 的 Popen.communicate 超时后,不能只捕获异常就结束。本文从输出管道、TimeoutExpired、kill 与再次 communicate 四个环节说明如何终止子进程、回收句柄,并保留已经产生的 stdout 和 stderr。457 收藏 -
使用 Python 标准库 tomllib 解析 TOML 时,重复键会触发 TOMLDecodeError。本文说明如何通过异常位置定位冲突、修复表路径中的重复定义,并封装稳定的读取诊断。452 收藏 -
用一个三项独立任务的汇总脚本说明 asyncio.gather 的异常返回模式,区分成功值、普通异常与子任务取消,并解释输入顺序、调用方取消传播和服务集成边界。449 收藏