0

我通过以下方式创建了一个分块数组:

import tables
FILTERS = tables.Filters(complib='lzo', complevel=1)
h5file = tables.openFile('file.h5', mode='w', filters=FILTERS)
x = h5file.createCArray(h5file.root,'chunk_array',tables.Float64Atom(),
                        shape=(256, 256, 256, 6, 6),
                        chunkshape = (256, 256, 256, 1, 1))

fill x by some value

h5file.close()

但是当我阅读这个文件时,pytables 需要很长时间:

FILTERS = tables.Filters(complib='lzo', complevel=1)
E5F = tables.open_file('file.h5', mode='r', filters=FILTERS)
carray = E5F.root.chunk_array[0, 0, 0]

需要……22秒!

我做错什么了吗?在这种情况下如何加快阅读性能?

4

1 回答 1

0

尝试将 chunkshape 更改为首先分块最外面的轴而不是最里面的轴。例如,chunkshape=(1, 256, 256, 6, 6)。这样做会在 0.474 秒内在我的机器上执行您的第二个脚本。

于 2014-04-16T21:21:11.627 回答