【Python】dequeは同一スレッドでないと使えない deque mutated during iteration

発生したエラー

RuntimeError: deque mutated during iteration

原因

pyaudioのコールバック関数を使って拾った音をdequeに保存し、
それをwavファイルに保存するときなどに、
dequeから読みだして書き込んでいる最中に、コールバック関数が
新しい音データをdequeに挿入し、dequeの中身が変わってしまった
場合などに現れます。

解決法

そもそもdequeを使わないのが一番ですが、
copy.deepcopy(<deque>)などを使って値渡ししてあげましょう。

Python, RaspberryPi

Posted by sasa