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


问题内容

我正在查看StringIO它说一些注释的来源:

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

StringIO 就像内存文件对象一样,为什么它比真实文件对象慢?


问题答案:

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

但是,StringIO库是用Python编写的。因此,模块本身具有相关的性能损失。

如您所知,还有另一个模块cStringIO,具有类似的接口,您可以在对性能敏感的代码中使用它。之所以无法将其归类,是
因为 它是用C语言编写的。