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

2024-04-27 02:50:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 文件数据方法内存版本numpyread进程
2条回答

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

我的建议是仔细阅读这篇文章:http://pytables.github.io/usersguide/optimization.html#understanding-chunking并尝试使用不同的块大小(通常使它们更大)。在

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

您已经很好地解释了为什么要维护内存使用here和{a2}(可以在question上找到)。一个好的解决方法是在子进程中使用multiprocessing模块打开和操作表

相关问题 更多 >