|
|
1
11
如果你只需要5000万行中的200行,那么把它全部读入内存是一种浪费。我会对搜索键列表进行排序,然后使用seek()或类似的方法对文件应用二进制搜索。这样您就不会将整个文件读取到内存中,我认为这样会加快速度。 |
|
|
2
7
S.Lotts答案的轻微优化:
因为我们使用的是字典而不是列表,所以键不必是数字。这将为每行保存map()操作和字符串到整数的转换。如果希望键是数字,请在结束时进行转换,此时只需对每个键执行一次转换,而不是对5000万行中的每一行执行一次转换。 |
|
|
3
4
现在还不清楚“列表[指针]”是关于什么的。然而,考虑一下这一点。
|
|
|
4
3
我将使用内存映射:
http://docs.python.org/library/mmap.html
|
|
5
3
这里是对文本文件的递归二进制搜索
在jEdit中创建的示例文本文件似乎有效:
|
|
|
6
2
如果您可以控制文件的格式,“排序和二进制搜索”响应是正确的。细节是,这只适用于固定大小和偏移量的记录(我应该说,它只适用于固定长度的记录)。 对于固定长度的记录,您可以轻松地在已排序的文件中查找()以查找密钥。 |
|
|
7
0
一种可能的优化是使用
|
|
|
8
0
您需要使用seek()实现二进制搜索 |
|
|
gradstud · 检索缓冲区中存储的文件数据 11 年前 |
|
|
Kevin · 对大数据帧中的观测值进行重新编号 11 年前 |
|
|
Mojing Liu · 在Python中通过大文件搜索字符串 12 年前 |
|
|
Driver · 替换大型日志文件中的字符 13 年前 |