为什么StringIO对象比实际文件对象慢?

Jan*_*tar 6 python stringio cstringio

我正在查看StringIO它所说的内容的来源:

  1. 使用真实文件通常更快(但不太方便).
  2. 在C中也有一个更快的实现,称为cStringIO,但它不是可子类化的.

StringIO 就像一个内存文件对象,为什么它比真正的文件对象慢?

sap*_*api 3

Python 的文件处理完全用 C 实现。这意味着它相当快(至少与本机 C 代码处于同一数量级)。

然而,StringIO 库是用 Python 编写的。因此,模块本身被解释,并伴随着相关的性能损失。

如您所知,还有另一个模块 cStringIO,具有类似的接口,您可以在性能敏感的代码中使用它。它不可子类化的原因是是用 C 编写的。