如何将串行数据分配给多个变量列表并在 Python 中的指定持续时间内对它们进行平均?

How to assign serial data to multiple list of variables and averaged them for a specify duration in Python?

我从传感器读取连续的串行数据。我将它拆分并分配给 5 个变量 - a、b、c、d、e。我正在尝试每 5 秒计算每个变量的平均值。由于我的传感器是 50Hz,我将范围设置为 250。我的实现如下所示。所以,问题是 - 有没有更好的方法来做到这一点,特别是将时间设置为恰好 5 秒而不是假设它等于 250 次循环?

a,b,c,d,e = [[] for i in range(5)]

for i in range(250):
    data = ser.readline().decode() #read from sensor
    msg  = float(data.split(','))
    a.append(msg[0])
    b.append(msg[1])
    c.append(msg[2])
    d.append(msg[3])
    e.append(msg[4])

average_a = sum(a)/len(a)
average_b = sum(b)/len(b)
average_c = sum(c)/len(c)
average_d = sum(d)/len(d)
average_e = sum(e)/len(e)

尝试这样的事情

import datetime
duration = 5 #Collect for 5 seconds
time_start = datetime.datetime.now()
time_end = time_start + datetime.timedelta(seconds=duration)
big_list = [[] for i in range(5)]

#This loops runs for 5 seconds
while datetime.datetime.now() < time_end:
    data = ser.readline().decode() #read from sensor
    #Create a list of floats and append it to a list
    msg = [float(f) for f in data.split(',')]
    for i, m in enumerate(msg):
        big_list[i].append(msg[i])

#Iterate through list of list, and calculate average for each list
for l in big_list:
    print(sum(l)/len(l))

例如如果数据每次都是'1,2,3,4,5'

big_list = []
for i in range(250):
    data = '1,2,3,4,5'
    msg = [float(f) for f in data.split(',')]
    big_list.append(msg)

for l in big_list:
    print(sum(l)/len(l))
#1.0
#2.0
#3.0
#4.0
#5.0