python - 是否可以加速 python IO?

标签 python linux performance text-files

考虑这个 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 的答案感兴趣。如果您有答案,请随意给出操作系统不可知论者甚至其他操作系统的答案。

另见follow-up question

最佳答案

用硬件解决问题。

正如 gs 所指出的,您的瓶颈是硬盘传输速率。所以,不,你不能使用更好的算法来改善你的时间,但你可以购买更快的硬盘。

编辑 gs 的另一个好点;你也可以使用 RAID配置以提高速度。这可以通过 hardware 来完成或软件(例如 OS XLinuxWindows Server 等)。


控制方程

(转账金额)/(转账率)=(转账时间)

(6000 MB)/(60 MB/s) = 100 秒

(6000 MB)/(125 MB/s) = 48 秒


硬件解决方案

The ioDrive Duo据说是企业环境中最快的解决方案,并且“将于 2009 年 4 月推出”。

或者您可以查看 WD Velociraptor 硬盘(10,000 rpm)。

另外,我听说 Seagate Cheetah是一个不错的选择(15,000 rpm,持续传输速率为 125MB/s)。

关于python - 是否可以加速 python IO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/849058/

相关文章:

python - 在 Replit.com 上使用 youtube_dl 时出现“Dislike_count”错误

python - 如何将 python 字典转换为具有故意重复值的列表

javascript - 将数组呈现为 HTML 的最有效方法

python - GeoPandas 中的格式/圆形数字图例标签

python - 将元组扩展为参数

linux - JavaFX 应用程序包版本号

java - 我可以使用 Jenkins 来测试虚拟机(服务器)是否已启动并正在运行吗?

c - 为什么此代码在编译时会生成错误 'undefined reference to main'?

java - Hashmap jdk1.7无锁get()和同步put()的线程安全

performance - 在 WHERE 中使用条件 =、>=、<= 优化 LOOP AT