2024-04-27 02:50:23 发布
网友
我使用read_where方法从一个大的hdf5文件中读取pytables.Table(版本3.1.1)中的一个数据块。生成的numpy数组大约有420mb,但是在read_where调用期间,python进程的内存消耗增加了1.6GB,并且在调用完成后内存不会释放。即使删除阵列、关闭文件和删除hdf5文件句柄也不会释放内存。在
read_where
pytables.Table
我怎样才能再次释放这些记忆?在
我们需要更多关于表对象细节的上下文,比如它有多大以及块大小。在这种情况下,HDF5如何处理分块可能是最大的责任之一。在
我的建议是仔细阅读这篇文章:http://pytables.github.io/usersguide/optimization.html#understanding-chunking并尝试使用不同的块大小(通常使它们更大)。在
巨大的内存消耗是由于python在数据周围实现了许多东西,以便于数据的操作。在
您已经很好地解释了为什么要维护内存使用here和{a2}(可以在question上找到)。一个好的解决方法是在子进程中使用multiprocessing模块打开和操作表
multiprocessing
我们需要更多关于表对象细节的上下文,比如它有多大以及块大小。在这种情况下,HDF5如何处理分块可能是最大的责任之一。在
我的建议是仔细阅读这篇文章:http://pytables.github.io/usersguide/optimization.html#understanding-chunking并尝试使用不同的块大小(通常使它们更大)。在
巨大的内存消耗是由于python在数据周围实现了许多东西,以便于数据的操作。在
您已经很好地解释了为什么要维护内存使用here和{a2}(可以在question上找到)。一个好的解决方法是在子进程中使用
multiprocessing
模块打开和操作表相关问题 更多 >
编程相关推荐