重新分析文件或取消删除

时间:2012-06-19 15:34:35

标签: python file pickle

我有一个100Mb的文件,大约有1000万行,每次运行代码时我都需要解析成字典。这个过程非常缓慢,我正在寻找加快速度的方法。想到的一个想法是解析文件一次然后使用pickle将其保存到磁盘。我不确定这会导致加速。

任何建议表示赞赏。

编辑: 在做了一些测试后,我担心在创建字典时会发生减速。酸洗确实显得更快,但我不介意做得更好。

拉利特

2 个答案:

答案 0 :(得分:0)

根据我的经验,

MessagePack在python和cPickle中转储/加载数据的速度要快得多,即使使用最高协议也是如此。

但是,如果您有一个包含1000万个条目的字典,您可能需要检查是否没有达到计算机内存的上限。如果内存不足并且必须使用swap,则该过程将发生得慢得多。

答案 1 :(得分:0)

根据您使用数据的方式,您可以

  • 将其分成许多小文件,只加载所需内容
  • 创建文件索引并延迟加载
  • 将其存储到数据库,然后查询数据库

您能否更好地了解数据的外观(结构)?

您如何使用这些数据?你实际上每次执行都使用每一行吗?如果您在每次运行中仅使用一个子集,那么数据是否可以预先排序?