Python串口非阻塞读取:连续转储数据到文件

Python non-block reading from a serial port: continuously dump the data to a file

我正在从 Arduino 高速向我的串口发送连续的数据流。我想把这些数据不断地转储到我的硬盘上。

在低速情况下,一个简单而低效的代码就可以了:

import serial
ser = serial.Serial('COM4', baudrate=9600)
f = open('data.dat', 'wb')
for i in range(10000):
    data = ser.read()
    f.write(data)
    f.flush()
ser.close()
f.close()

在更高的速度下,我们可以将 data = ser.read() 更改为 data = ser.read(10000) 以便在每个函数调用中缓冲更多数据,从而提高效率。

但是,我在想:是不是应该有更好的办法呢?从概念上讲,我想象有一种方法可以缓冲 10000 字节的数据,并在另一个 thread/process 开始将这些数据保存到硬盘,然后回到主 thread/process 继续接收数据。

会是reasonable/possible吗?更具体地说,问题是:

1) 我应该使用多线程还是多进程?

2)数据应该存储在哪里,在threads/processes之间应该如何传递?

没必要。磁盘写入已经分派。必须这样,因为磁盘设备没有办法将一个字节写入磁盘。