我正在高速地从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字节的数据,并在另一个线程/进程中开始将这些数据保存到硬盘驱动器,然后返回主线程/进程以保持接收数据。
那会合理/可能吗?更具体地说,问题是:
1)我应该使用多个线程或进程吗?
2)数据应存储在何处以及如何在线程/进程之间传递?
答案 0 :(得分:2)
没有必要。已分派磁盘写入。必须采用这种方式,因为磁盘设备无法将一个字节写入磁盘。