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

0 投票
2 回答
528 浏览
提问于 2025-04-18 09:23

我正在使用 read_where 方法从一个大大的 hdf5 文件中读取一块数据,这个数据是从 pytables.Table(版本 3.1.1)中提取的。读取后得到的 numpy 数组大约有 420 MB,但在调用 read_where 的时候,我的 Python 程序的内存使用量却增加了 1.6GB,而且在调用结束后,这部分内存并没有被释放。即使我删除了这个数组,关闭了文件,甚至删除了 hdf5 文件的句柄,内存依然没有释放。

我该如何释放这部分内存呢?

2 个回答

0

我们需要更多关于你这个表格对象的具体信息,比如它有多大,以及分块的大小。HDF5处理分块的方式可能是导致内存占用过高的主要原因之一。

我的建议是仔细阅读这个链接:http://pytables.github.io/usersguide/optimization.html#understanding-chunking,并尝试不同的分块大小(通常可以试着把它们做得大一些)。

1

大量的内存消耗是因为Python在处理数据时,会在数据周围做很多额外的工作,以便更方便地操作这些数据。

你可以在这里那里找到关于为什么内存使用量保持不变的好解释(这些链接是在这个问题中找到的)。一个不错的解决办法是使用multiprocessing模块,在一个子进程中打开并操作你的表格。

撰写回答