问题描述
我正在从 RaspBerry Pi 中的外部设备收集数据,每次收集 4 个字节,大约每秒 100 个样本。数据写入安装了操作系统的 SD 卡。
目前,我使用以下代码:
with open('data.dat','ab') as f:
while True:
sample_word = read_sample() # read 32 bits from a peripheral
f.write(sample_word.to_bytes(4,'big'))
由于数据收集将运行几个星期,我不想通过连续写入相同的块来磨损 SD 卡。 open() 函数有一个缓冲参数,这表明我不需要为缓冲添加自定义逻辑:
buffering 是一个可选整数,用于设置缓冲策略。传递 0 以关闭缓冲(仅在二进制模式下允许),1 以选择行缓冲(仅在文本模式下可用),以及一个大于 1 的整数以指示固定大小块缓冲区的大小(以字节为单位)。当没有给出缓冲参数时,默认缓冲策略的工作方式如下:
- 二进制文件以固定大小的块缓冲;缓冲区的大小是使用试探法来选择的,尝试确定底层设备的“块大小”并回退到 io.DEFAULT_BUFFER_SIZE。在许多系统上,缓冲区的长度通常为 4096 或 8192 字节。
启发式方法是否能很好地猜测 SD 卡块大小? io.DEFAULT_BUFFER_SIZE
是 8k。将大小传递给 buffing 参数是否更安全?如果是,最近的 SD 卡的最佳尺寸是多少?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)