tantivy 的 Python 绑定,把全文索引嵌进自己的进程,不用起服务。实测 3855 条文档、158995 字:jieba 分词后建索引 3.44 秒、索引 598.8 KB、单词查询 0.01 毫秒。中文不分词时五个查询里有一个直接命中 0 条,必须先自己切词。
GITHUB TOPIC
#python
共 31 个已实测项目
jieba 是纯 Python 的中文分词库,装完 import 就能切,带精确、全模式、搜索引擎三种粒度和自定义词典。19.1 万字的真实语料 0.28 秒切完,折合 67.68 万字/秒;import 0.45 秒、首次调用还要 0.38 秒加载词典。关键词提取 TF-IDF 0.04 秒,TextRank 0.47 秒。
Faker 生成中文假数据一秒 1.2 万条,比英文 locale 快 3.7 倍。姓名唯一率只有 57.9%,不能当唯一键;地址和手机号重复率为零。要唯一值得用 unique 模式或自己加序号。
pyinstrument 是采样式性能分析器,开销跟 Python 调用次数成正比:20 万次调用慢 3.46 倍,纯 C 计算和 IO 等待几乎零开销。interval 调大不省时间,样本太少会得到空报告。
watchfiles 是 Rust 写的文件监视库,step=50 时改一个文件约 100 毫秒内收到通知。下限由防抖窗口决定,改名和保存都可能产生多个事件,不能假设一次操作等于一个事件。
psutil 把系统信息封装成一行调用,但开销差三个数量级:取单进程内存 2.5 微秒,取整机内存 5.9 毫秒。遍历进程只取 pid 9 毫秒,多要一个进程名就变 875 毫秒。
mypy 是静态类型检查器,读代码不运行。同一批 50 个文件它要 1015 毫秒,是 ruff 的 28.4 倍,但它能拦住运行时才炸的参数类型错误,代价是查不出除零这类值层面的问题。
给代码着色的成本主要在词法分析:6000 行 192,559 字节的文件,指定 lexer 着色 761.7 毫秒,交给 guess_lexer 猜语言要 1859 毫秒,是 2.4 倍,短片段还常被猜成 TextLexer 等于不着色。
模板引擎的成本不在渲染而在编译:预编译复用 1000 次 98.6 毫秒,每次都重新编译 3042.7 毫秒,差 31 倍。关掉 autoescape 快 23%,代价是引号和尖括号不再转义,渲染 HTML 时不能关。
ruff 是 Rust 写的 Python 检查器和格式化工具,一个可执行文件同时顶掉 flake8、isort 和 black,跑 200 个文件只要 290 毫秒。
pypdf 是纯 Python 的 PDF 处理库:读页数、拆页、合并、加密、提取文本,都不依赖外部命令行工具。排版复杂的文档提取顺序会乱,扫描件提不出文字。
tenacity 是功能最完整的 Python 重试库:四行参数写清次数上限、退避策略、重试条件和失败抛出方式。比手写 while 多了随机抖动、返回值判断和统计信息。
loguru 是不用配置的日志库:导入就有一个能直接用的 logger,彩色输出、文件轮转、异常追踪全预置。比标准库慢 15%,但省掉二三十行配置。
pydantic 是 Python 最常用的数据校验库,v2 核心用 Rust 重写。声明式定义字段约束,自动做类型转换,一次报出所有错误字段。
orjson 是 Rust 写的 JSON 库,接口和标准库几乎一样,dumps 返回 bytes。它能显著加速「把数据写出去」这一步,读回来收益有限。
click 是 Python 老牌命令行框架,typer 建在它上面。它比 argparse 好写、比 typer 快 369 毫秒,处在中间位置。多层嵌套子命令和参数类型系统是它真正省事的地方。
typer 是 FastAPI 作者做的命令行框架,参数从类型注解自动推导,自带好看的帮助面板和 shell 补全。代码比 argparse 短,代价是每次启动多花半秒。
httpx 是接口和 requests 几乎一样的 HTTP 客户端,支持 async/await 和 HTTP/2。但在 Windows 上高并发不一定比线程池快,实测 200 并发反而慢 2.5 倍。
sqlite-utils 一条命令把 CSV 变成可查的 SQLite,自动建表推断类型,还能命令行查询、建全文索引、改表结构。便捷性很强,但导入性能是硬伤。
PyInstaller 把 Python 脚本连解释器一起打成 exe,别人不装 Python 就能双击。代价是 11 MB 体积和每次启动 160 毫秒的解压,还有一个几乎人人踩的中文编码坑。
rich 是 Python 的终端排版库:表格、进度条、语法高亮、树状图,一行 import 就能把命令行输出做好看。中文占两个字符宽度这件事它已经处理了。
httpie 是给人类用的 HTTP 客户端:命令比 curl 短,返回的 JSON 自动格式化上色。适合手工调接口,不适合放进循环批量跑。
uv 是 Rust 写的 Python 包管理器:一个 exe 管装包、建虚拟环境、下载解释器。官方说快 10 倍,实测发现这个倍数取决于缓存和虚拟环境是否在同一个盘。
PasteMD 是常驻托盘的转换工具,复制 Markdown 或 AI 回复,按一次热键就贴进 WPS。实测装完占 325 MB,其中 233 MB 是自带的 pandoc。转出来的 docx 结构干净,标题表格公式都走语义样式,只是样式表一次带进 81 个定义。
chardet 7.7.0 与 charset-normalizer 3.5.2 对照实测:两者编码判定一致,但 chardet 的置信度随样本变长从 0.10 升到 0.67,charset-normalizer 恒为 1.00,后者不能用来判断可靠性。
Agent Reach 是给 AI 装上网工具的安装器加体检器,装完一条 doctor 就能看出这台机器能读哪些平台:16 个渠道只有 3 个直接可用。它靠 shutil.which 找上游工具,装进 venv 会被判成未安装。PyPI 上只有 0.1.0,要装 GitHub 上的 1.5.0。
glances 4.5.8 实测:同一个 CPU 状态,psutil 采样间隔 0.1 秒给出 72.6%、1 秒给出 11.1%,差六倍。interval=None 首次恒为 0.0。非阻塞连续采样极差达 7.7 个百分點,压力下到 36.3。API 单项 1-2 毫秒,进程列表 337 KB / 5 毫秒,自身内存 8.9 MB。
cn2an 0.5.24 实测:14 个中文数字转对 11 个,分数、百分比、单字「半」直接抛异常。「零下五度」会被静默转成「0下5度」,不报错但结果是错的。rmb 模式自动处理角分,3.14 输出叁元壹角肆分。
pypinyin 0.55.0 实测:12 个常见姓氏只读对 2 个(都是复姓),单姓十投九错。「很长」拼成 hen zhang、「一行字」拼成 yi xing zi 也是错的。TONE2 的声调数字插在韵母中间(zho1ng),和常见写法 zhong1 不一致。






























