不确定这个问题是否有意义/是否与wrt zarr相关。我将zarr数据分组存储在磁盘上,例如,我有
group = zarr.group()
d1 = group.create_dataset('baz', shape=100, chunks=10)
d2 = group.create_dataset('foo', shape=100, chunks=10)现在group是可迭代的,所以我可以遍历它并读取所有组的数据:
all_data = [group[g][:] for g in group]有没有一种方法可以使用多线程从组中读取所有数据来加快速度?我知道在数组中,您可以使用多线程来读写数据。
假设按组读取数据对我来说太慢了,我是否应该将所有组放入一个数据数组容器中?我想知道除了组织容器之外,组的功能是什么。因为假设每个组包含相似的数据,理论上您可以向numpy数组添加另一个轴(用于组),并将所有组存储在一个大数组中。
发布于 2019-07-05 06:38:14
组主要用作组织容器。一个组可以包含任意数量的数组,其中每个数组可以具有不同的形状和/或数据类型,因此它们是一种灵活的数据组织方式。如果您的数组都具有相同的形状和数据类型,那么您可以按照您的建议,将它们堆叠到一个多维数组中。但是,如果数据总量相同,我不认为读取速度会有很大的不同,无论您在一个组中有多个阵列,还是在一个阵列中有所有数据。
如果您想要将组中的所有数组读入内存,并且您使用的是默认压缩器(Blosc),那么在解压缩期间这将已经使用了多个线程。Blosc通常在利用可用内核方面做得很好,因此您可能无法通过添加任何进一步的多线程来提高性能。
https://stackoverflow.com/questions/56781085
复制相似问题