gpt4 book ai didi

python - 如何在某些C代码执行某个线程时保持python脚本打开?

转载 作者:行者123 更新时间:2023-12-03 00:21:30 25 4
gpt4 key购买 nike

我正在尝试向pyAudio添加非阻塞音频I / O。

pyAudio依赖PortAudio进行音频I / O。要在PortAudio中执行非阻塞音频,请在打开音频流时定义一个回调函数。当音频流启动时,只要需要新的音频数据,它将调用回调函数。

这部分有效。为了测试这一点,我编写了一个简单的脚本,该脚本实现了如下所示的回调函数:

def pyAudioCallback(frameCount,inADCtime,curTime,outADCtime,userData,inp = None):
data=getData(frameCount)
return (data,0)

每当音频流需要新的音频样本时,都会调用此回调。但是,脚本不知道音频流仍在运行,并在完成时终止,这当然也会终止音频流。

我可以通过在某处插入一些 time.sleep()来解决此问题。脚本处于休眠状态时,音频播放将正常进行。但是,我宁愿将脚本的完成推迟到音频流认为完成为止。

有没有一种方法可以使Python session 在满足特定条件之前保持 Activity 状态?还是某些等待循环是唯一的选择?

最佳答案

几种方法。

创建一个管道。将读取端无超时地传递给select.select()。音频结束后,加快写入端的速度。

两次获取信号量或互斥量。音频完成后将其释放。

还有更多,您可能不需要。

关于python - 如何在某些C代码执行某个线程时保持python脚本打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com