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

2024-04-20 13:29:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用多处理库制作一个同时包含图像和音频处理的GUI应用程序。但是,在macosx上测试相同的代码似乎不起作用,除非我删除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之后启动多处理。你知道吗

这个问题有解决办法吗?你知道吗


Tags: 代码图像importtaskistkinteras语句
1条回答
网友
1楼 · 发布于 2024-04-20 13:29:18

如果我们知道错误到底是什么就好了,所以如果你能把它复制进去就好了。^^ 总之,我对multiprocessing.Process也没有很好的经验,所以我用threading.Thread来代替。因此,我用Thread作为元类定义了一个新类,并将运行的函数定义为run。 e、 g.:

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个

相关问题 更多 >