从串行端口读取Python非块:连续将数据转储到文件中

时间:2015-05-07 01:47:49

标签: python multithreading serial-port pyserial

我正在高速地从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)数据应存储在何处以及如何在线程/进程之间传递?

1 个答案:

答案 0 :(得分:2)

没有必要。已分派磁盘写入。必须采用这种方式,因为磁盘设备无法将一个字节写入磁盘。