1作者: tolopalmer大约 2 个月前原帖
我构建了 warp_cache,这是一个线程安全的 Python 缓存装饰器,基于 Rust 扩展(PyO3)。它被设计为 functools.lru_cache 的直接替代品。 主要特点: - 使用 SIEVE 驱逐算法(NSDI'24)而非 LRU——抗扫描,实际工作负载下缓存未命中的次数减少了多达 21.6% - 整个缓存查找在单个 Rust __call__ 中完成——没有 Python 包装器的开销 - 开箱即用的线程安全:在 GIL 下使用 GilCell,在自由线程的 Python(3.13+)下使用分片的 RwLock - 通过 mmap 实现跨进程共享内存后端(跨进程每秒 9.7M 次操作) - 单线程性能为每秒 16–23M 次操作,比 cachetools 快 25 倍,比在多线程负载下的 lru_cache + Lock 快 1.6 倍 从 lru_cache 迁移只需一行代码: ```python -from functools import lru_cache +from warp_cache import cache -@lru_cache(maxsize=128) +@cache(max_size=128) ``` 基准测试和驱逐质量比较可以在代码库中找到。