对象变量未更改

时间:2014-10-29 11:00:46

标签: python variables object python-multithreading

我希望我已经没有错过这个问题的任何明显答案,但我希望你能帮助我解决我的一个小问题。 我目前正在python中编写一个程序来进行一些音频处理和反馈预测。到目前为止,我有一个类,我希望以10毫秒的间隔运行,并在包含音频数据的缓冲区上工作。我想在稍后使用来自微缩模型的实时输入来填充该缓冲区,但是目前我只使用第二类,每隔10ms将一大块audiodata流入缓冲区。至少这是应该做的。

我的流类具有以下功能,该功能在新线程中启动使用 start_new_thread(audioStreamer.streamAudio())

def streamAudio(self):
    while not self.done:      
       chunk = self._readTestChunk()
       self.feedbackPred.audioStreamCallback(chunk, np.size(chunk), None, None)
       time.sleep(0.01)

self.feedbackPred是对主类的引用,它每隔10ms对主方法使用一个计时器。然而,这也是有效的,上面提到的audioStreamCallback在我的观点中表现得很奇怪:

def audioStreamCallback(self, in_data, frame_count, time_info, status_flags):
    print "chunk_s:", self.chunk_s     
    result = np.fromstring(in_data, dtype=np.float32)
        if frame_count == self.chunk_s:
            self.audioBuf = result
            print "setting audiobuf size to chunk_s"
            self.aduioBufSize = self.chunk_s
            print "after setting, self.audioBufSize:", self.audioBufSize

忽略那些丑陋的调试打印和过于复杂的标题,我需要将该标题用于麦克风案例。我的输出很不幸:

chunk_s: 160
setting audiobuf size to chunk_s
after setting, self.audioBufSize: 0

我希望你们中的一些人能够指出我做错了什么,即使是这个最小的代码示例。有趣的是,一个较小的测试用例,它使用一个以特定间隔运行的函数和一个填充缓冲区的不同线程,对我来说很好。

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

问题是:

self.aduioBufSize = self.chunk_s

且确切地aduio..。只是一个错字