gpt4 book ai didi

Python "in memory DB style"数据类型

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:08 26 4
gpt4 key购买 nike

我正在使用 Raspberry Pi 创建一个气象站。我为不同的传感器(温度、湿度、压力、降雨等)设置了 mySQL 数据库,现在开始处理风传感器。

我有一个 python 程序,可以监视风速计的 GPIO 引脚并计算脉冲数以计算风速。它还通过 ADC 从风向标进程中读取数据以获得方向。对于其他传感器,我只每隔几分钟处理一次并将数据直接转储到数据库。因为我必须根据风传感器数据计算很多东西,所以我不一定要每 5 秒写入 DB,然后必须读回过去 5 分钟的数据来计算当前的速度和方向。我想收集内存中的数据,进行处理,然后将最终的数据写入数据库。传感器读数类似于:

日期时间、速度、方向
2013-6-20 09:33:45, 4.5, W
2013-6-20 09:33:50, 4.0, 软件
2013-6-20 09:33:55, 4.3, W

该程序每 5 秒计算一次来自风传感器的数据。我想每 5 分钟向数据库写入一次数据。因为数据库位于 SD 卡上,所以我显然不想向数据库写入 60 次,然后读回处理它,然后每 5 分钟将其写入永久存档数据库。

使用列表列表会更好吗?或者以日期时间为键的元组字典?
{datetime.datetime(2013, 6, 20, 9, 33, 45, 631816): ('4.5', 'W')}
{datetime.datetime(2013, 6, 20, 9, 33, 50, 394820): ('4.0', 'SW')}
{datetime.datetime(2013, 6, 20, 9, 33, 55, 387294): ('4.3', 'W')}

对于后者,更新字典的最佳方法是什么?我应该将其转储到数据库并读回吗?对于这么少的数据来说,这似乎是每天的读/写量过多。

最佳答案

Python程序和数据库之间有多个缓存层。特别是,Linux 磁盘 block 缓存可能会根据使用模式将数据库保留在核心中。因此,您不应该假设写入数据库和读回一定比您放入应用程序中的某些自制缓存慢。您为过早优化数据库而编写的代码将比您不编写的代码存在更多错误。

对于您指定的工作负载,MySQL 给我的印象是相对于 SQLite 来说有点重量级,但您可能有未说明的原因需要它。

关于Python "in memory DB style"数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com