gpt4 book ai didi

python - 以表格式使用 hdf 时内存泄漏?

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:48 27 4
gpt4 key购买 nike

在 pandas 下,每次我使用表格格式而不是固定格式时,我的内存消耗都会爆炸。

import numpy as np
np.random.seed(seed=10)
df = pd.DataFrame ({'ID' : ['foo', 'bar'] * 10000000,
'ORDER' : np.arange(20000000),
'VAL' : np.random.randn(20000000)})

案例#1:修复格式

df.to_hdf('test.h5','df',append=False,format ='fixed')

现在,我读了十十倍的 df,我的工作没有高内存消耗

for a in range(10):
df1 = pd.read_hdf('test.h5','df')

案例#2:表格格式

df.to_hdf('test.h5','df',append=False,format ='table')

现在,我读了 10 次 df,它不会在每次迭代时释放内存。内存消耗越来越高

for a in range(10):
df1 = pd.read_hdf('test.h5','df')

有什么建议吗?

Windows 64位Python 3.4,pandas 0.15.1

最佳答案

使用较小的锉刀 n=1MM。

他们的表格式分配大约 2x 内存然后收集它。这主要是存储格式的作用。

In [12]: %mprun -f f f()
Filename: test.py

Line # Mem usage Increment Line Contents
================================================
5 115.1 MiB 0.0 MiB def f():
6 125.8 MiB 10.7 MiB pd.read_hdf('test.h5','df')
7 125.8 MiB 0.0 MiB gc.collect()
('',)

In [13]: %mprun -f f2 f2()
Filename: test.py

Line # Mem usage Increment Line Contents
================================================
9 125.8 MiB 0.0 MiB def f2():
10 228.5 MiB 102.7 MiB pd.read_hdf('test2.h5','df')
11 115.0 MiB -113.5 MiB gc.collect()

关于python - 以表格式使用 hdf 时内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27228701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com