Python多处理,不知道如何解决

时间:2016-12-26 23:32:10

标签: python multiprocessing python-multiprocessing

我一直在寻找线程和多线程页面和教程,我仍然不知道如何实现我需要的东西。我有一个类可以读取音频流,还有一个用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}}

1 个答案:

答案 0 :(得分:1)

问题可能是audiooppyaudio正在返回一个不可用的_portaudio.Stream对象。由于多个进程无法共享内存,因此必须使用某些序列化方法来回传递消息,multiprocessing使用pickle模块。如果你不能腌制一个对象,你就不能在进程之间传递它。

除非您需要使用多个CPU内核的性能优势,否则您可能无法使用threading模块而不是multiprocessing