繁体   English   中英

Pyaudio和线程导致RuntimeError:在迭代过程中设置更改的大小

[英]Pyaudio & Threading leads to RuntimeError: Set changed size during iteration

我在Raspberry Pi上通过Pyaudio录制音频时遇到问题。 我的代码的目的是记录每10s到20s的10s长的小音频片段。

为此,我为记录器启动了自己的线程:

# Create collect beat thread.
recorder_thread = Thread(target=beat_analyzer, args=(recorder_queue,))
recorder_thread.start()

它使用另一个类来控制时间(recorder_queue)。 录制本身发生在beat_analyzer中。 在某种程度上,这可以正常工作……但是大约一两个小时后,我得到以下异常:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/pi/beatmap/bm-client/lib_recorder.py", line 134, in beat_analyzer
    py_audio.terminate()
  File "/usr/lib/pymodules/python2.7/pyaudio.py", line 644, in terminate
    for stream in self._streams:
RuntimeError: Set changed size during iteration

由于我没有遍历某些东西(至少我对此一无所知),所以我想知道问题出在哪里。 如果可能是Pyaudio内部需要解决的问题? 提示非常感谢。

在尝试了不同的chunk_count设置之后,并且阅读了laike9m的文章之后,我决定使用另一个库。 在这种情况下,Alsaaudio-从那时起,它就像一个烟囱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM