保存传感器数据的最佳方法,Python中每x MB拆分一次

yrwegjxp  于 2023-01-22  发布在  Python
关注(0)|答案(1)|浏览(155)

我正在以每秒64个样本的速度将传感器数据保存到一个csv文件中。该文件在24小时结束时大约为150兆。这比我想要处理的时间要长一些,我需要真实的进行一些处理。

value = str(milivolts)
            logFile.write(str(datet) + ',' + value + "\n")

所以我最后只画了一行日期和150兆伏特的电压。在24小时结束时,它会生成一个新文件并开始保存。
1.我想知道是否有更好的方法。我已经搜索过,但找不到任何关于保存传感器数据时使用的压缩的好信息。是否有一种方法可以在流式传输/保存时进行压缩?什么格式最适合?
1.在保存传感器数据时,是否有一种简单的方法可以将其拆分为x兆字节的文件,而不会出现数据间隙?
谢谢你的意见。

f4t66c6m

f4t66c6m1#

1.我想知道有没有更好的办法。
最简单的方法之一是使用日志框架,它允许你配置要使用的压缩器(如果有的话),文件的大致大小以及何时旋转日志。你可以从this question开始。尝试使用几种不同的压缩器,看看速度/大小是否适合你的应用。
1.在保存传感器数据时,是否有一种简单的方法可以将其拆分为x兆字节的文件,而不会出现数据间隙?
日志记录框架将根据配置为您执行此操作。您可以组合几个不同的选项:例如,具有固定大小的原木,并且每天至少旋转一次。
一般来说,这是精确到一个日志行的大小,所以如果数据被拆分成大小合理的行,这会让工作变得超级容易。一行结束于一个文件,另一行被写入一个新文件。
文件也会旋转,因此您可以在文件名中编码数据的顺序:

raw_data_<date>.gz
raw_data_<date>.gz.1
raw_data_<date>.gz.2

在元代码中,它看起来像这样:

# Parse where to save data, should we compress data,
# what's the log pattern, how to rotate logs etc
loadLogConfig(...)

# any compression, rotation, flushing etc happens here
# but we don't care, and just write to file
logger.trace(data)

# on shutdown, save any temporary buffer to the files
logger.flush()

相关问题