python - 在Python中处理巨大的数组

标签 python memory virtual-memory

我的程序运行一个模拟,需要巨大的对象来存储数据。blob 的大小大于 2-3GB。尽管我的 MBP 应该有足够的内存,但 python(Mac OS X 上的 Python 2.7.3,来自 ports)似乎无法全部使用,并且系统完全卡住。

为了保存模拟的状态,我使用pickle,但它也不适用于太大的对象,似乎pickle会在转储它们之前在内存中复制对象......

问题:是否有一个标准库可以处理巨大的 Python 数据结构(字典、集合、列表),而无需始终将它们保留在内存中?或者有没有办法强制 python 在虚拟内存中运行? (我对 numpy 不太熟悉,在这种情况下它对我有帮助吗?)

提前致谢!

最佳答案

如果您使用的是 64 位版本的 Python,并且仍然遇到 pickle 或其他内置模块的问题,您可以将 Python 对象存储在面向对象的数据库中。我们每天都在处理大型对象(~10GB)并使用 ZODB为了那个原因。它不是最快的,但可以完成工作。

我还听说dobbin可能是一个不错的选择。

关于python - 在Python中处理巨大的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14055373/

相关文章:

linux - 是否可以延迟 Linux OOM Killer 并运行我的进程?

c++ - 为什么不解决 fork 过程中的变化?

operating-system - 当条目被从 TLB 驱逐时更新页表

Python C 扩展装饰器

python - PTVS 未检测到已安装的 VS2010

python - sqlalchemy.exc.IntegrityError - mySql - 自动增量和数据库存储中的主键错误

android - 如何计算表的内存?

c++ - 使用 malloc 与 new

python - 如何在 Python 中使用 factorize() 后获取原始值?

c++ - 为什么同一台服务器的两个版本表现不同?