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