0

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

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

Jack 12
Mary 13
Bob 15

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

4

1 回答 1

1

考虑使用更底层的东西。不幸的是,搁置性能可能非常低。不过,这并不能解释您所看到的减速。

对于许多基于磁盘的索引,如果您可以将它们初始化为预期的大小,这将有所帮助,因此它们不需要即时重新组织自己。我已经看到这对各种库中的磁盘哈希表具有巨大的性能影响。

至于您的实际目标,请查看:

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

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

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

尝试创建初始大小为 4100 万的数据库,以便针对此大小进行优化!

于 2012-07-18T10:43:34.163 回答