Python 确定从hdf5文件中选择的块数

Python 确定从hdf5文件中选择的块数,python,hdf5,chunks,hdfstore,Python,Hdf5,Chunks,Hdfstore,当以块的形式从hdf5文件中选择时,我想知道结果选择中有多少块 输入数据nrows中的行数最多可达100mln,chunksize为100k,但对于大多数选择,块nrows\u chunk中的行数较小,因此对于不同的位置,我可以选择一个或多个块。在对块进行操作之前,以及调用iteratorGenerator()时,我想知道将有多少块。直观地说,在我的语法中,我需要类似于len(list(enumerate(iteratorGenerator()))的东西,但这会给出length=1(我想是因为i

当以块的形式从
hdf5
文件中选择时,我想知道结果选择中有多少块

输入数据
nrows
中的行数最多可达100mln,
chunksize
为100k,但对于大多数选择,块
nrows\u chunk
中的行数较小,因此对于不同的
位置,我可以选择一个或多个块。在对块进行操作之前,以及调用
iteratorGenerator()
时,我想知道将有多少块。直观地说,在我的语法中,我需要类似于
len(list(enumerate(iteratorGenerator()))
的东西,但这会给出length=1(我想是因为
iteratorGenerator()
一次只考虑一个块)

我怀疑这个问题没有解决方案,因为使用生成器的整个想法不是一次执行所有选择,而是逐块执行。但实际上,当我运行下面的
for
循环时,第一次迭代需要很长时间,但接下来的迭代只需要几秒钟,这表明在第一次迭代中,大部分关于块的数据都是收集的。这让我感到困惑,如果能解释一下分块选择是如何工作的,我将不胜感激

iteratorGenerator = lambda: inputStore.select(
                groupInInputStore,
                where=where,
                columns=columns,
                iterator=True,
                chunksize=args.chunksize
            )

nrows = inputStore.get_storer(groupInInputStore).nrows

# if there is more than one chunk in the selection:
for i, chunk in enumerate(iteratorGenerator()):
    # check the size of a chunk 
    nrows_chunk = len(chunk)
    # do stuff with chunks, mainly groupby operations

# if there is only one chunk do other stuff 
此外,我不确定
HDFStore.select
中的
chunksize
指的是什么。根据我的经验,它是应用
where
条件后所选块的最大大小。另一方面,定义了chunksize:nrows以包含在迭代中,对我来说,这听起来像是要读取的行数。哪个是正确的