【发布时间】:2021-06-20 04:47:55
【问题描述】:
我有一个 python 程序,它通过 UDP 以 +- 1000 Hz 的速率接受数据流。一个典型的流需要 +- 15 分钟。 它由 +- 10 个通道组成,每个通道由双精度流、布尔值或大小为 3 的带有时间戳的向量组成。
目前每次迭代(每秒 1000 次)它都会将一行写入包含所有值的 csv 文件。
为了限制文件的大小,我想将格式更改为 hdf5 并使用 h5py 写入数据。
非常短,应该是这样的:
class StoreData(threading.Thread):
def __init__(self):
super().__init__()
self.f = open_hdf5_file_as_write()
def run(self):
while True:
# return True every +- 0.001 seconds
if self.new_values_available():
vals = self.get_new_vals()
# What to do best with the vals here?
但我偶然发现了 2 个问题。
-
HDF5 文件的最佳结构是什么?最好将流存储在不同的组中,还是将不同的数据集存储在同一组中?
-
我应该如何写数据?我是否使用调整大小来扩展具有 1 个变量的数据集的每次迭代?我是在本地存储数据并在每 n 次迭代中更新每个流的 n 个值,还是将所有内容保存在 pandas 表中并在最后只写入一次?
回答 2 个问题中的 1 个已经很有帮助了!
【问题讨论】: