【发布时间】:2013-08-18 08:57:26
【问题描述】:
有文本文件(约300M),需要统计前N个频率词。第一步是从磁盘读取它,现在我只是使用open.read().lower()(不区分大小写)有没有更有效的方式来处理IO部分?测试机8核4G内存,Linux系统,python版本为2.6。
【问题讨论】:
-
您需要多快?您可以获得一个基线,它很好地考虑了 IO 和单词拆分
time wc -w m30text.txt→ 0.67 秒挂钟。 Martijn 对同一个 30M 字(磁盘上 34MB)文本文件的回答:3.0s。 Python GIL 可能会阻止您减少 2.3 秒来填充 Counter 对象,无论您有多少内核。 -
谢谢,也许 python 不是解决这类问题的合适语言
-
这根本不是预期的结论。您对文件被读取和解析成单词的速度有一个下限。如果您测量了正确、无错误且性能更高的替代实现,请向我们展示。在你测量它之前,它并不存在,而且大多数人对 Python 内在函数性能的直觉通常是不正确的。
-
@msw 我的测试文件大约20M,最好的java时间大约是350ms,最好的C++时间大约是170ms。
标签: python performance io