ayafileio 是一个跨平台真异步文件 I/O 库。Windows 用 IOCP,Linux 用 io_uring,macOS 用 GCD,完全绕过线程池模拟。
核心创新是 ResultBatcher,解决了 C++ 扩展里的公认难题:I/O 完成后怎么高效通知 Python 的事件循环。传统做法每个完成都跨线程回调一次,高并发下 GIL 和事件循环锁会炸。ResultBatcher 在 C++ 侧把完成事件攒成自适应批次,根据磁盘 I/O 间隔动态调整批量大小,快盘攒得多、慢盘发得快,把跨线程通知次数从 O(N) 压到 O(N/B),B 最大可达 256。
效果是碾压级的。十万并发随机读,aiofiles 的线程池吞吐量从 7700 跌到 2100 再爬不起来,ayafileio 能维持 19000 以上,同场景快 9 倍。五十万并发压测零错误、零异常,峰值内存不到 600MB。
Python 侧完全兼容 aiofiles 的 async with open 写法,文本、二进制、编码、newline 都支持,也有 readinto 和流式 chunk 生成器。默认配置已经跑满磁盘物理上限,几乎不用手动调参。pip install 即用,Python 3.10+。
点击空白处退出提示









评论