在我的应用中调用p = pyaudio.PyAudio()会导致它在多进程内部被调用时冻结。注意我正在使用pythonw而不是python运行应用程序。当我删除wx模块时,它工作正常。有关如何解决的任何建议?我在MacOS上使用python 3.5
from app import frame, app
import pyaudio
import time
import multiprocessing as mp
def worker():
p = pyaudio.PyAudio()
while True:
print('starting worker')
print('pyaudio', p)
time.sleep(1)
if __name__ == '__main__':
p1 = mp.Process(target=worker)
p1.start()
frame.Show()
app.MainLoop()
p1.join()
app.py
import wx
app = wx.App()
frame = wx.Frame(parent=None, title='Hello World')
frame.Show()
app.MainLoop()
导入app
模块时,它正在执行所有代码,并在处理和调度事件时在app.MainLoop()
处阻塞。直到MainLoop
返回,控制权才返回主模块。