使用Python中的PyAudio和Tkinter进行多处理不适用于Mac OS X.

问题描述 投票:-1回答:1

我正在尝试使用多处理库同时创建一个同时包含图像和音频处理的GUI应用程序。但是,在Mac OS X上测试时,相同的代码似乎不起作用,除非我删除了import tkinter语句

import pyaudio
# The import statement below is causing the problem
import tkinter as tki
import multiprocessing
import threading

def do_task():
    p = pyaudio.PyAudio()
    print("Task complete")

if __name__ == '__main__':
    p = multiprocessing.Process(target=do_task, args=())
    p.start()
    # Code works when import statement is placed here
    # import tkinter as tki
    p.join()

上面的代码在Windows上打印Task complete,并在import语句移位时打印Task complete,这不是一个好的解决方案,因为我需要在初始化UI后启动多处理。

这个问题有解决方法吗?

python tkinter multiprocessing python-multiprocessing pyaudio
1个回答
0
投票

如果我们知道错误究竟是什么,那就太好了,所以如果你能把它复制它就会很好。 ^^无论如何我没有与multiprocessing.Process的良好经验所以我使用threading.Thread而不是。因此,我将Thread定义为一个新类作为元类,并定义运行函数应该是run。例如。:

from threading import Thread

class Audio(Thread):
    def __init__(self,...):
        Thread.__init__(self)
        #...
    def run(self):
        #audio stuff

class GUI(Thread):
    def __init__(self,...):
        Thread.__init__(self)
        #...
    def run(self):
        #GUI stuff
a,g=Audio(),GUI()
a.start(),g.start()

我不知道这是否真的有帮助,但我希望如此。 :d

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.