首页 > 解决方案 > 在 Python 中延迟值流

问题描述

我真的可以使用一些帮助来延迟从 FIFO 管道中提取的数据流。我正在构建一个音乐可视化器,程序从管道中提取频率条高度数据。但是,我的蓝牙扬声器存在一些延迟,因此我需要将条形高度数据延迟约 0.5 秒,以便视觉效果与音频同步。这是一个快速视频,演示了我的可视化器与有线扬声器,因此您可以了解它应该如何与蓝牙扬声器一起使用。

一个简单的 time.delay() 不会起作用,因为这会在每个数据点之间产生 0.5 秒的间隙,这会杀死流。我需要一个源源不断的源源不断的流,它进来后只需 0.5 秒。

我想我可以使用多处理来调用延迟器方法而无需等待它返回,从而创建均匀延迟值的恒定流。但是,当我运行这段代码(粘贴在下面)时,程序变得不堪重负,一切都冻结了。对我的代码或实现结果的更好方法的任何建议将不胜感激。谢谢!

def delayer(dstring):
    time.sleep(.5)
    print(dstring)

while True:
    fd1 = open(thepath,'rb')
    for line in fd1:
    
        stringvals = line.decode("utf-8")
        t = multiprocessing.Process(target=delayer,args=(stringvals,))
        t.start()

标签: pythonmultiprocessingdelay

解决方案


推荐阅读