программа замораживания pyaudio в многопроцессорном режиме с помощью wxPython - PullRequest
0 голосов
/ 23 февраля 2020

Вызов p = pyaudio.PyAudio () в моем приложении приводит к его зависанию при вызове внутри многопроцессорной системы. Обратите внимание, что я запускаю приложение с pythonw вместо python. Когда я удаляю модули wx, все работает нормально. Любые предложения о том, как исправить? Я использую python 3.5 на MacOS

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()

1 Ответ

0 голосов
/ 23 февраля 2020

Когда вы импортируете свой модуль app, он выполняет весь код и блокирует на app.MainLoop(), пока он обрабатывает и отправляет события. Элемент управления не возвращается к вашему главному модулю, пока не вернется MainLoop.

...