随着时间的推移,Python会丢失性能写入磁盘

时间:2012-07-18 09:06:29

标签: python file data-mining shelve

我编写了一个代码,用于从非常大的数据文件中获取输入,对其执行一些简单的处理,然后将其存储为搁置字典格式。我有4100万个条目要处理。然而,在我向搁置字典写入3500万个条目后,性能突然下降并最终完全停止。知道我能做些什么来避免这种情况吗?

我的数据在Twitter上,它将用户屏幕名称映射到他们的ID。像这样:

Jack 12
Mary 13
Bob 15

我需要非常快速地按名称访问其中的每一个。比如:当我给my_dict[Jack]时,它会返回12

1 个答案:

答案 0 :(得分:1)

考虑使用更低级别的东西。不幸的是,搁架性能可能非常低。这并不能解释你所看到的减速。

对于许多基于磁盘的索引,如果您可以使用预期大小初始化它们,则帮助,因此它们无需动态重新组织。我已经看到这种情况对各种库中的磁盘哈希表产生巨大的性能影响。

至于你的实际目标,请看看:

http://docs.python.org/library/persistence.html

特别是gdbm, dbhash, bsddb, dumbdbmsqlite3模块。

sqlite3可能不是最快的,但最容易使用。毕竟,它有一个命令行SQL客户端。 bsddb可能更快,特别是如果您为数据大小调整nelem和类似参数。它确实有很多语言绑定;可能甚至超过sqlite。

尝试创建您的数据库,初始大小为4100万,因此可以优化此大小!