Python 3.x python中的FIFO缓冲区

Python 3.x python中的FIFO缓冲区,python-3.x,buffer,signal-processing,raspberry-pi4,adc,Python 3.x,Buffer,Signal Processing,Raspberry Pi4,Adc,我试图从传感器获取信号,并用树莓和Python“实时”处理它。我使用ADC转换器进行数字输入。我被告知要实现一种缓冲区,因为时间处理时间太长,会停止ADC采集。我的计划是: 采集线程:ADC在choosen输出采样 采样率并将其放入环形缓冲区(Python中的队列) 处理线程:在缓冲区满时从缓冲区中提取样本,并在一个块中处理 我的问题是:如何在一个块中将保存在缓冲区中的ADC数据发送到处理代码?我已经读过,分块处理更方便,但我不知道如何做到这一点。我想使用threds,因为我不想丢失示例。虽然可

我试图从传感器获取信号,并用树莓和Python“实时”处理它。我使用ADC转换器进行数字输入。我被告知要实现一种缓冲区,因为时间处理时间太长,会停止ADC采集。我的计划是:

  • 采集线程:ADC在choosen输出采样 采样率并将其放入环形缓冲区(Python中的队列)
  • 处理线程:在缓冲区满时从缓冲区中提取样本,并在一个块中处理

  • 我的问题是:如何在一个块中将保存在缓冲区中的ADC数据发送到处理代码?我已经读过,分块处理更方便,但我不知道如何做到这一点。我想使用threds,因为我不想丢失示例。虽然可以在Python中创建多个线程,但很抱歉,(标准CPython)解释器实际同时执行这些线程的能力有限。问题的关键在于解释器不是线程安全的,因此线程必须持有“全局解释器锁”或“GIL”才能安全地访问Python对象:

    另见这些相关员额:

    如果可能,我会考虑使用java或C++或其他语言来更好地支持这个项目的多线程。 如何在一个块中将保存在缓冲区中的ADC数据发送到处理代码


    (如果您仍然想使用Python)ADC数据可以作为或传递到处理代码。

    虽然可以在Python中创建多个线程,但很抱歉,(标准CPython)解释器实际同时执行这些线程的能力有限。问题的关键在于解释器不是线程安全的,因此线程必须持有“全局解释器锁”或“GIL”才能安全地访问Python对象:

    另见这些相关员额:

    如果可能,我会考虑使用java或C++或其他语言来更好地支持这个项目的多线程。 如何在一个块中将保存在缓冲区中的ADC数据发送到处理代码

    (如果您仍然想使用Python),ADC数据可以作为或传递给处理代码