我正在使用大型hdf5文件中的pytables.Table
方法从read_where
(版本3.1.1)中读取一大块数据。生成的numpy数组大约有420 MB,但是在read_where
调用期间,我的python进程的内存消耗增加了1.6GB,并且在调用完成后内存没有释放。即使删除数组,关闭文件和删除hdf5文件句柄也不会释放内存。
我怎样才能再次释放这段记忆?
答案 0 :(得分:1)
巨大的内存消耗是由于python在数据周围实现了很多东西以便于操作。
您已经很好地解释了为什么要保留内存使用here和there(在此question上找到)。一个好的解决方法是使用multiprocessing
模块
答案 1 :(得分:0)
我们需要更多关于Table对象细节的上下文,比如它的大小和块大小。在这种情况下,HDF5如何处理分块可能是拥抱内存的最大责任之一。
我的建议是仔细阅读:http://pytables.github.io/usersguide/optimization.html#understanding-chunking并尝试不同的大块(通常会让它们更大)。