如何避免pytables中的高内存使用?

时间:2014-06-11 08:31:30

标签: python pytables

我正在使用大型hdf5文件中的pytables.Table方法从read_where(版本3.1.1)中读取一大块数据。生成的numpy数组大约有420 MB,但是在read_where调用期间,我的python进程的内存消耗增加了1.6GB,并且在调用完成后内存没有释放。即使删除数组,关闭文件和删除hdf5文件句柄也不会释放内存。

我怎样才能再次释放这段记忆?

2 个答案:

答案 0 :(得分:1)

巨大的内存消耗是由于python在数据周围实现了很多东西以便于操作。

您已经很好地解释了为什么要保留内存使用herethere(在此question上找到)。一个好的解决方法是使用multiprocessing模块

在子进程中打开和操作表

答案 1 :(得分:0)

我们需要更多关于Table对象细节的上下文,比如它的大小和块大小。在这种情况下,HDF5如何处理分块可能是拥抱内存的最大责任之一。

我的建议是仔细阅读:http://pytables.github.io/usersguide/optimization.html#understanding-chunking并尝试不同的大块(通常会让它们更大)。