在我最近的一个项目,我需要完成这个简单的任务,但我不知道什么是这样做的最有效的方式。
我有几个大的文本文件(> 5GB),我需要不断地提取这些文件随机线。 的要求是:我不能将文件加载到内存中,我需要非常有效地执行此(>> 1000线的第二),优选我需要做的如以下预处理越好。
文件由许多短行〜(20条密耳线)。 “原始”的文件已经变化的线长,但很短的预处理我可以让所有线路具有相同的长度(虽然,完美的解决方案将不需要预处理)
我已经尝试了默认的Python的解决方案中提到这里 ,但他们太慢了(和linecache解决方案加载文件到内存中,因此无法使用这里)
我想到了一个解决方案是创建某种指标。 我发现这个解决方案 ,但它是非常过时的,因此需要一些工作来获取工作,即使这样,我不知道,如果索引文件的处理过程中产生的开销不会进程慢下来时标解决方案以上。
另一种解决方案是将文件转换成二进制文件,然后让到线即时访问这种方式。 对于这种解决方案我无法找到一个支持二进制文字工作的任何Python包,我觉得自己像创建一个健壮的分析器这种方式可能需要很长的时间,并可能了,因为小的失误线创造了许多难以诊断错误/错误。
最终的解决方案我想过使用某种数据库(sqlite的在我的情况),这将需要线转移到一个数据库,并加载它们这样。
注:我也将载入数以千计的(随机)线每一次,因此这对于线路组更好地工作,将具有优势的解决方案。
提前致谢,
艺术。