我正在使用包含大字符串值的dicts加载很多对象。总的来说,该程序超过2GB并崩溃。它不会超过太多,但我以后可能会有更大的数据。
似乎Python 32bit无法访问更多内存。我想将来我需要一些对象数据库系统,它能够处理大数据并且仍然不会太慢(即存储在DB或硬盘中,但保留一些内存以提高速度)。为了提高性能,我不想只在MySQL中保存数据,而是采用一些透明的机制,尽可能地保留在内存中。
你能想出一个处理对象中这么多数据的好方法吗?
答案 0 :(得分:4)
根据您的数据结构的复杂程度,请查看以下内容:
键值存储,该死的快('O(1)所有'),扩展到许多机器,用于缓存(不持久)。有持久和加载数据的解决方案,甚至memcachedb。
JSON存储,可以包含除主键以外的索引,可以扩展到多台计算机,具有自动分片和自动故障转移,持久性。支持非常快速的插入,原子操作,一种用于复杂查询的内置map-reduce。
键值存储,值可以是结构化的。有许多高级操作,原子操作,发布/订阅,主从复制。完全在RAM中运行,但持久性机制有限。
考虑重新制定问题的标题,例如“选择什么内存数据库”会提供更多信息。
答案 1 :(得分:1)
您没有提及您使用哪种操作系统。 Linux下的AFAICT这个问题不存在,所以我想你的意思是Windows。
我曾经遇到过这个问题并用这种方法解决了这个问题:
我刚刚为我的PC @ work添加了一些内存,现在想要Python了 能够利用它。
我的boot.ini已经包含/ 3GB开关了很长一段时间,但是 尽管如此,我只能在Python中分配2 GB。
所以我用我从中获取的imagecfg.exe更改了python.exe http://blog.schose.net/index.php/archives/207它现在有效。
这只是FYI,对于你们中的一个人希望能够做到的情况 所以。
但请注意,有副作用并非不可能。