4
我正在使用pyAudio來聽音頻設備,並在主程序繼續運行時在後臺執行一些「內容」。通過python多處理啓動子進程掛起
我從第二個腳本開始,但希望整合到單個腳本中以提供可支持性。當我將函數移入並使用Process來啓動偵聽器時,它只會掛起而不會運行。
這裏是代碼的簡化的片段:
def listener(self, q):
CHANNELS = 2
RATE = 44100
INPUT_BLOCK_TIME = 0.05
FORMAT = pyaudio.paInt16
RATE = 44100
INPUT_FRAMES_PER_BLOCK = int(RATE*INPUT_BLOCK_TIME)
p = pyaudio.PyAudio()
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = INPUT_FRAMES_PER_BLOCK)
q.put(os.getpid())
import time
time.sleep(300)
def startListener(self):
q = Queue()
p = Process(target=self.listener, args=[q])
p.daemon=True
p.start()
print q.get()
現在,如果我刪除以下流的設置,然後我得到的進程ID早在預期:
stream = p.open(format = FORMAT,
channels = CHANNELS,
rate = RATE,
input = True,
frames_per_buffer = INPUT_FRAMES_PER_BLOCK)
有一些關於多和線程我失蹤了?這是一個壞主意嗎?我應該堅持將偵聽器代碼保存在單獨的腳本中嗎?
在此先感謝!
好的,發佈後,我意識到這可能不是一個嚴格的python問題。雖然代碼是python,但它正在web2py框架下運行。我在web2py之外測試過,效果很好。我將打開問題並將問題發送到web2py郵件列表。如果我得到修復,我也會在這裏發佈。 – Nite 2011-06-01 15:11:30