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)})
df.to_hdf('test.h5','df',append=False,format ='fixed')
现在,我读了十次df,我的工作没有高内存消耗
for a in range(10):
df1 = pd.read_hdf('test.h5','df')
df.to_hdf('test.h5','df',append=False,format ='table')
现在,我读了10十次df,它没有释放内存上每个itération.memoryconsuption正在变高
for a in range(10):
df1 = pd.read_hdf('test.h5','df')
有什么建议吗?
windows 64bits python 3.4,pandas 0.15.1
答案 0 :(得分:1)
使用较小的文件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()