Pyaudio&线程导致RuntimeError:在迭代期间设置更改的大小

时间:2015-05-17 09:45:04

标签: python multithreading python-2.7 pyaudio

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

要做到这一点,我要为录音机启动一个自己的线程:

# 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内部需要解决的问题? 提示非常赞赏。

1 个答案:

答案 0 :(得分:0)

经过大量尝试不同的chunk_count设置,并在阅读了laike9m的帖子后,我决定使用另一个库。在这种情况下,Alsaaudio - 从那以后它就像一个魅力。