在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')
现在,我读了十次十次df,它没有在每个itération.memory上释放内存消耗变得很高
for a in range(10):
df1 = pd.read_hdf('test.h5','df')
有什么建议吗?
windows 64位python 3.4,pandas 0.15.1
发布于 2014-12-02 19:57:47
使用较小的文件n=1MM。
他们的表格式分配了大约2倍的内存,然后收集它。这主要是存储格式的功能。
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()
https://stackoverflow.com/questions/27228701
复制相似问题