如何在Python中存储和访问大型(~10 GB)列表?

Wes*_*May 10 python nlp list shelve pickle

我有一大堆字符串,我正在用于自然语言处理研究,我想要一种很好的方式将它存储在Python中.

我可以使用pickle,但是将整个列表加载到内存中将是不可能的(我相信),因为它大约10 GB,并且我没有那么多的主内存.目前我将列表与shelve库一起存储...架子用字符串索引,"0","1",......,"n"这有点笨重.

有没有更好的方法将这样的对象存储在一个文件中,并且仍然可以随机(ish)访问它?

可能最好的选择是将其拆分为多个列表.

谢谢!

sar*_*old 9

根据您打算获取数据的方式,SQLite3可能是最好的方法.SQLite3非常适合随机访问关系数据,但如果您的数据不是非常关系,那么它可能没有多大意义.(即使你所有的都是'id'数字然后你的字符串,我认为SQLite3用于你的字符串的底层存储可能会很棒.)

如果你能找出一些机制,可以通过某种方式将你的字符串组合在一起(比如说,如果你的某些句子有暗示的对象或主题,你想特别对它们进行研究;或者依赖于您的字符串的来源,无论是正式的还是非正式的,或者是非正式的),那么您可以通过对数据进行分区来显着降低数据的"工作集",并可能极大地提高研究的吞吐量.但是如果你打算真正随机访问那么一大堆可能是最好的.

希望这可以帮助.

  • 哈!更快_and_更小.我喜欢SQLite3.:d (2认同)