python - 内存问题 : Should I be writing to file/database if I'm using swap? (Python)

标签 python memory swap

我正在创建和处理一个非常大的数据集,大约有 3400 万个数据点,目前我将它们存储在内存中的 python 字典中(大约 22,500 个字典,1588 个类实例中每个都有 15 个字典)。虽然我能够在内存中管理这一切,但我用完了所有 RAM 和大部分交换空间。

我需要能够首先生成所有这些数据,然后一次对其中的选定部分进行分析。从效率的角度来看,将其中一些数据写入文件或将其存储在数据库中是否有益?或者我最好只是承受使用交换空间带来的效率损失。如果我应该写入文件/数据库,您是否建议使用任何 python 工具来执行此操作?

最佳答案

快速获取关系数据库!或者更多的内存。

如果您使用的是 Python,则从 Python Database Programming 开始。 SQLite将是一个选择,但我建议 MySQL基于您正在处理的数据量。如果您想要采用面向对象的方法来存储数据,您可能需要查看 SQLAlchemy ,但是如果您最终自己将每个对象类映射到一个表并只处理行和列,您可能会获得更高的效率。

关于python - 内存问题 : Should I be writing to file/database if I'm using swap? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3087741/

相关文章:

python - 为什么 PlotWidget 在 GridLayout 单元格中无法缩放?

javascript - 使用 Web Audio API 播放时声音会在内存中扩展吗?

python - HTTP 服务器在接受数据包时挂起

python - 大数据矩阵分解推荐系统给出MemoryError

java - 为什么JVM使用堆来存储对象和静态变量,使用栈来存储局部变量和函数调用?

java - Cassandra = 内存/编码- key 占用空间(哈希/字节[]=>十六进制=>UTF16=>字节[])

c - 将指针交换为 C 中的指针

struct - 如何交换结构的两个字段

java - 就地交换逻辑在快速排序中不起作用,但使用临时变量进行交换可以工作。为什么?

python - 从openstreetmap获取tag信息,具体为tag info