python教程技术文章
-
读取几 GB 的 CSV 时,真正容易把内存推高的往往不是分块大小,而是类型推断、字符串列和失败行处理。本文用 pandas 分块读取与 Python 原生迭代两条路径,说明如何设定 dtype、逐块校验、隔离坏行并用峰值数据验收。392 收藏 -
该语法并非类型转换(typecast),而是 ctypes 模块特有的动态类型构造:c_double * n 会生成一个长度为 n 的 C 兼容数组类型,再通过解包调用实例化——本质是类型生成而非类型转换。 该语法并非类型转换(typecast),而是 ctypes 模块特有的动态类型构造:`c_d391 收藏 -
Python 的无界缓存命中率可能很好,却把不断变化的参数组合留在进程里。本文用可复现实验比较 functools.cache 与 lru_cache(maxsize=None),并给出内存上限、清理和压测验收方法。391 收藏 -
同一个 Python logger 同时输出控制台和审计日志时,handler 级 Filter 可以返回 LogRecord 副本,只给目标 handler 增加字段,避免污染其他输出。391 收藏 -
围绕 Python sqlite3 讲清 autocommit、isolation_level、executescript 和 commit/rollback 的边界,帮助写入逻辑避免意外提交。391 收藏 -
解释 ChainMap 查找层与写入层的差异,演示用 maps 显式更新指定配置、用 new_child 隔离修改,以及何时应该封装深层写入规则。390 收藏 -
Python 的 csv.Sniffer 只能根据样本文本做启发式判断。本文用受限候选分隔符、足够样本、csv.Error 兜底和 reader 结果检查,降低小样本误判带来的导入问题。389 收藏 -
Python 3.12 引入 pathlib.Path.walk 后,可以用底层目录遍历写清理脚本,但大型目录不能只调用 rmtree。本文从 top_down、follow_symlinks、失败回调和 dry-run 记录出发,给出可复核的清理流程。388 收藏 -
Python functools.lru_cache 报 unhashable type list 时,根因是可变参数不能参与缓存键。本文解释哈希边界,并用 tuple、排序后的 tuple、frozenset 和包装函数完成稳定缓存。388 收藏 -
Python sqlite3 中回滚失效,常见原因不是 rollback() 写错,而是提交时机、异常捕获范围和连接边界没有对齐。本文用订单写入示例拆开事务生命周期、异常复现、上下文管理器和嵌套调用的验收方法。387 收藏 -
Python 3.14 为 argparse 增加 suggest_on_error,可在 choices 或子命令拼写错误时给出相近提示。本文用一个备份命令行工具演示如何开启、如何兼容 Python 3.13 及更早版本,以及为什么它不能替代参数语义校验。386 收藏 -
用 Python 3.12+ 的 sys.monitoring 追踪函数调用,讲清工具 ID、事件掩码、回调签名、DISABLE 优化与旧版本回退边界。386 收藏 -
asyncio.timeout 适合给一段包含多个 await 的工作设置总预算,asyncio.wait_for 适合限制单个 awaitable。本文比较两者的保护范围、取消对象、TimeoutError 捕获位置和清理延迟,给出异步请求中的选择示例。386 收藏 -
文章 · python教程 | 2个月前 | 并发 · 标准库 · 任务调度 · python · 序列化 concurrent.futures Python解释器池 InterpreterPool 异常边界
Python 3.14 的解释器池让多个解释器在同一进程内并行运行,但解释器之间不共享可变对象。本文用一个可核对的小实验说明 submit、pickle 序列化、initializer 和异常传播的边界,并给出何时选线程池、解释器池或进程池的判断方法。384 收藏 -
Python itertools.islice 可以像切片一样表达 start、stop、step,却不会先把整个迭代器转换成列表。本文用生成器和日志窗口说明惰性截取、参数边界、输入消费位置,以及它与列表切片的选择差异。383 收藏