当前位置: 首页 > 面试题库 >

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

程和煦
2023-03-14
问题内容

考虑以下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的答案感兴趣。如果有答案,请随时提供与操作系统无关的答案,甚至与其他操作系统无关。


问题答案:

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

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

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


 类似资料:
  • 问题内容: 如果我有一个主键say,并且我对该键进行了简单的查询,例如, 它会找到一行然后停止查找,因为它是主键,还是最好告诉mysql通过使用它来限制它的选择?例如: 问题答案: 使用“ IMIT 1”是否可以加快对主键的查询? 不。它已经没有了就快了。无论如何有效地暗示。 它会找到一行然后停止查找,因为它是主键 是的。 这里根本不需要表扫描:这是基于键的查找。找到匹配的行,到此过程结束。

  • 问题内容: 我正在制作一个程序,要求至少每秒捕获24个屏幕截图。目前,使用下面的代码,我每94毫秒仅获得1个,因此大约为10毫秒。 我不想使用任何第三方库,因为我试图将其保持尽可能小,但是如果我希望获得显着的性能提升,我会愿意的。我也试图保持该平台独立,但是,如果确实能够显着提高性能,我愿意将其限于Windows。 编辑:我现在也尝试了两种不同的方法;使用在oracles网站上找到的代码段,并在下

  • 这只是为了满足我自己的好奇心。 是否有以下实现: 生锈了吗?如果存在,发布代码。 我试过了,失败了。不知道如何用整数格式对浮点数进行编码。以下是我的尝试: 参考文献: 1.地震起源3的Fast InvSqrt()-第1页 2.了解地震的快速平方反比根 3.快速反比平方根。pdf 4.源代码:q_math.c#L552-L572

  • 问题内容: 是否有Apple框架捆绑包来检测是否存在互联网连接?当前,当我的应用程序尝试在没有互联网连接的情况下对用户的位置进行地理位置定位时会崩溃。 我对Swift和ios编程有些陌生-抱歉。 问题答案: 这不是一个完善的网络检查库,但是我发现了这种简单的方法来检查网络可用性。我设法将其翻译为Swift,并在这里完成了最终代码。 它适用于3G和WiFi连接。我还通过一个工作示例将其上传到了我的G

  • 我们有一个web应用程序,我们想在“批处理”模式下运行,在这种模式下,我们不希望任何endpoint暴露(出于安全原因)。 这在SpringBoot可能吗?

  • 问题内容: 更新: 我已经意识到,由于涉及大量数据(15k项以上),因此无法以当前形式回答以下问题。 我刚刚发现,我要帮助的小组只允许其运行一个月,然后终止该小组以使用结果(这就是为什么他们希望在更短的时间内获得更多结果的原因)。这对我来说似乎很疯狂,因为它们仅使用前几组数据(大列表中的最后一项永远不会使用)。因此,我正在修改此问题,以获取预期输出的样本(解决方案的近似值而不是完整的解决方案)。在