我正在尝试执行两个并发进程,第一个进程不断计算(例如每0.1秒)麦克风记录的频率,而第二个进程计算频率并每隔0.5秒绘制一个表示。
我对如何实现线程感到有点困惑,我无法执行并行线程。
这是一段代码:
class MicrophoneThread(QtCore.QThread):
def __init__(self):
super(MicrophoneThread , self).__init__()
def __del__(self):
self.wait()
def run(self):
print("Microphone Thread")
while True:
time.sleep(0.1)
self.emit(SIGNAL('listen()'))
class PaintThread(QtCore.QThread):
def __init__(self, el):
super(PaintThread , self).__init__(el)
def __del__(self):
self.wait()
def run(self):
i = 0
while True:
i += 1
time.sleep(0.5)
self.emit(QtCore.SIGNAL('update(QString)'), str(i))
从MainWindow我实例化线程。
threadOne = MicrophoneThread(self)
self.connect(threadOne , QtCore.SIGNAL('listen()') , self.listen, Qt.DirectConnection)
threadOne.start()
threadTwo = PaintThread(self)
self.connect(threadTwo , QtCore.SIGNAL('update(QString)') , self.changeIndicatorAngle, Qt.DirectConnection)
self.connect(threadTwo , QtCore.SIGNAL('update(QString)') , self.changeNoteLabel, Qt.QueuedConnection)
threadTwo.start()
只有MicrophoneThread启动,而第二个不起作用。
感谢您阅读的任何建议或文件。
答案 0 :(得分:0)
我自己解决了这个问题,问题很简单。
我在程序启动时实例化MainWindow中的第一个Thread,而我只在单击另一个表单上的按钮时才实例化第二个。
所以我有一个MainWindow,我在其中运行MicrophoneThread,另一个Form在我单击按钮时运行PaintThread。