我写了一段代码,从一个非常大的数据文件中获取一个输入,对它执行一些简单的处理,然后将其存储在一个shelve字典格式中。我有4100万个条目要处理。然而,在我为shelvedict写了3500万个条目之后,性能突然下降,最终完全停止。你知道我能做些什么来避免这种情况吗?在
我的数据在twitter上,它将用户的用户名映射到他们的ID上。如下所示:
Jack 12
Mary 13
Bob 15
我需要很快地按名字访问每一个。比如:当我给my_dict[Jack]
时,它返回12
。在
Tags:
考虑使用更低级的东西。不幸的是,货架性能可能很低。但这并不能解释你看到的减速。在
对于许多基于磁盘的索引,如果您可以将它们初始化为预期的大小,那么它可以帮助,因此它们不需要动态地重新组织自己。我已经看到这对不同库中的磁盘哈希表的性能有很大的影响。在
至于你的实际目标,看看:
http://docs.python.org/library/persistence.html
尤其是}模块。在
gdbm, dbhash, bsddb, dumbdbm
和{sqlite3
可能不是最快的,但最容易使用。毕竟,它有一个命令行SQL客户机。bsddb
可能更快,特别是当您针对数据大小调整nelem
和类似参数时。而且它也有很多语言绑定;可能比sqlite还要多。在尝试创建初始大小为4100万的数据库,这样它就可以针对这个大小进行优化!在
相关问题 更多 >
编程相关推荐