簡體   English   中英

在 Python 中使用 PyAudio 和 Tkinter 進行多處理不適用於 Mac OS X

[英]Multiprocessing with PyAudio and Tkinter in Python not working on Mac OS X

我正在嘗試使用多處理庫制作一個同時包含圖像和音頻處理的 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上完成,還打印任務完成后,import語句被移動,這是不是因為我需要在我初始化UI開始多了良好的解決方案。

這個問題有什么解決方法嗎?

如果我們知道錯誤到底是什么,那就太好了,所以如果你能把它復制進去就好了。 ^^ 無論如何,我對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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM