我一直在寻找线程和多线程页面和教程,我仍然不知道如何实现我需要的东西。我有一个类可以读取音频流,还有一个用Tkinter可视化它,这是每个人最喜欢的包。
PicklingError: Can't pickle <type '_portaudio.Stream'>: it's not found as _portaudio.Stream
我知道它不是最好的代码,它的某些部分是其演变的残余,但是现在我希望能够让记录器永远运行其run函数,并在其上调用draw()。问题是我不知道如何让run()永远运行并将数据放入队列。我已经在put()行上收到了一个pickle错误,接着是一个回溯文章。
File "C:\Users\My Name\Documents\Programming\visualizer.py", line 108, in <module>
p.start()
追溯到
{{1}}
答案 0 :(得分:1)
问题可能是audioop
或pyaudio
正在返回一个不可用的_portaudio.Stream
对象。由于多个进程无法共享内存,因此必须使用某些序列化方法来回传递消息,multiprocessing
使用pickle
模块。如果你不能腌制一个对象,你就不能在进程之间传递它。
除非您需要使用多个CPU内核的性能优势,否则您可能无法使用threading
模块而不是multiprocessing
。