0

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

任何建议表示赞赏。

编辑:做了一些测试后,我担心创建字典时会出现减速。酸洗似乎确实要快得多,尽管我不介意做得更好。

拉利特

4

2 回答 2

0

根据我的经验, MessagePack在 python 中转储/加载数据比 cPickle 快得多,即使使用最高协议也是如此。

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

于 2012-06-19T15:52:53.257 回答
0

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

  • 将其分成许多较小的文件并仅加载需要的文件
  • 在文件中创建索引并延迟加载
  • 将其存储到数据库中,然后查询数据库

您能否更好地了解您的数据是什么样的(结构)?

你是如何使用数据的?你真的在每次执行时都使用每一行吗?如果每次运行只使用一个子集,数据可以预先排序吗?

于 2012-06-19T20:14:17.957 回答