python - Numpy 数组大于 RAM : write to disk or out-of-core solution?

标签 python arrays numpy memory bigdata

我有以下工作流程,我将数据附加到一个空的 Pandas 系列对象。 (这个空数组也可以是一个 NumPy 数组,甚至是一个基本列表。)

in_memory_array = pd.Series([])

for df in list_of_pandas_dataframes:
    new = df.apply(lambda row: compute_something(row), axis=1)  ## new is a pandas.Series
    in_memory_array = in_memory_array.append(new)

我的问题是结果数组 in_memory_array变得对于 RAM 来说太大了。我不需要将所有对象都保存在内存中以进行此计算。

我认为我的选择是以某种方式将对象酸洗到磁盘,一旦数组对于 RAM 来说太大,例如
# N = some size in bytes too large for RAM
if sys.getsizeof(in_memory_array) > N: 
    with open('mypickle.pickle', 'wb') as f:
        pickle.dump(in_memory_array, f)

否则,是否有核外解决方案?最好的情况是创建一些上限,以便对象在 RAM 中的增长不能超过 X GB。

最佳答案

查看这个 python 库:https://pypi.org/project/wendelin.core/
它允许您使用大于 RAM 和本地磁盘的阵列。

关于python - Numpy 数组大于 RAM : write to disk or out-of-core solution?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60871793/

相关文章:

通过带有字典的字符串输入,带有 numpy 数组的 Python eval 函数

python - numpy 矩阵到 pandas 系列

python - 如何只打印给定记录器的日志消息?

python - 从一个脚本调用另一个脚本并导入其值

javascript - 如何正确地向局部函数添加参数?

c++ - 数组作为参数

python - numpy 零数组或空数组

python - 在不循环的情况下堆叠和整形 DataFrame (pandas) 的切片

python - 来自 "Learning Python the Hard Way"的 if 语句的目的是什么?

javascript - 访问 JSON 对象内的数组元素