【发布时间】:2011-04-08 13:21:27
【问题描述】:
我有一个很大的文本文件目录——大约 7 GB。我需要将它们快速加载到 iPython 中的 Python unicode 字符串中。我总共有 15 GB 的内存。 (我使用的是 EC2,所以如果绝对必要,我可以购买更多内存。)
对于我的目的来说,仅仅读取文件太慢了。我尝试将文件复制到 ramdisk,然后将它们从那里加载到 iPython 中。这加快了速度,但 iPython 崩溃了(没有足够的内存剩余?)这是 ramdisk 设置:
mount -t tmpfs none /var/ramdisk -o size=7g
有人有什么想法吗?基本上,我正在寻找持久的内存中 Python 对象。 iPython 要求禁止使用 IncPy:http://www.stanford.edu/~pgbovine/incpy.html。
谢谢!
【问题讨论】:
-
您真的需要一次在内存中存储所有数据吗?真的吗?
-
这几乎肯定是错误的做法。 Python 不是为存储大量数据而设计的。无论是几个巨大的对象还是数百万个单行字符串,它们都会以非设计的方式对 VM 施加压力。如果不解释为什么您确实需要这样做,而不是将数据加载到专为此类存储而设计的数据库后端,您将很难获得帮助。
-
我可以使用数据库后端。你推荐哪一个?至于我是否需要内存中的所有数据,我真的不知道。我正在使用 Aho-Corasick 算法搜索子字符串。我只是认为将所有内容都记入内存是一种好习惯...
标签: python memory ctypes shared-memory ipython