小编典典

是否可以加快python IO的速度?

linux

考虑以下python程序:

import sys

lc = 0
for line in open(sys.argv[1]):
    lc = lc + 1

print lc, sys.argv[1]

在我的6GB文本文件上运行它,大约2分钟即可完成。

问题: 是否可以更快?

请注意,以下情况需要相同的时间:

wc -l myfile.txt

因此,我怀疑我的疑问只是一个简单的“否”。

还要注意,我的真实程序正在做的事情不仅仅是计数行数,因此请给出一个通用的答案, 而不是 行数计数技巧(例如在文件中保留行数元数据)

PS:我将此问题标记为“ linux”,因为我仅对特定于linux的答案感兴趣。如果有答案,请随时提供与操作系统无关的答案,甚至与其他操作系统无关。


阅读 707

收藏
2020-06-03

共1个答案

小编典典

您无法获得比最大磁盘读取速度更快的速度。

为了达到最大磁盘速度,您可以使用以下两个技巧:

  1. 用大缓冲区读入文件。这可以“手动”编码,也可以使用io.BufferedReader(在python2.6 +中可用)简单地编码。
  2. 在另一个线程中并行进行换行计数。
2020-06-03