【发布时间】:2012-12-04 06:08:22
【问题描述】:
我有一种情况,我需要一个接一个地启动两个线程。我尝试了以下代码sn-p,在这里我可以启动Thread12但无法启动Thread2。我怎样才能同时开始......? 如何彼此启动 2 个线程...?
代码 sn-p
class Thread1(QtCore.QThread):
Thread1Signal = QtCore.pyqtSignal(str)
def __init__(self):
super(Thread1, self).__init__()
def run(self):
print 'Thread1 started'
While True:
#some statments
if Condition:
Thread1Signal.emit('Yes')
else:
Thread1Signal.emit('No')
class Thread2(QtCore.QThread):
Thread2Signal = QtCore.pyqtSignal(str)
def __init__(self):
super(Thread2, self).__init__()
def run(self):
print 'Thread2 started'
While True:
#some statments
if Condition:
Thread2Signal.emit('Yes')
else:
Thread2Signal.emit('No')
class MainClass(QtCore.QObject):
MainSignal1 = QtCore.pyqtSignal(str)
MainSignal2 = QtCore.pyqtSignal(str)
def __init__(self):
super(MainClass, self).__init__()
Threadinstance1 = Thread1()
Threadinstance1.Thread1Signal.connect(MainSignal1)
Threadinstance2 = Thread2()
Threadinstance2.Thread2Signal.connect(MainSignal2)
def start(self):
Threadinstance1.start()
Threadinstance2.start() #Thread2 never starts.
def signal1called(s):
print s
def signal2called(s):
print s
if __name__=='__main__':
app = AtGui.QApplication(sys.argv)
temp = MainClass()
temp.MainSignal1.connect(signal1called)
temp.MainSignal2.connect(signal2called)
temp.start()
sys.exit(app.exec()_)
【问题讨论】:
-
您确定您的测试用例的线程运行时间足以让您看到发出的信号吗?您在启动事件循环之前启动线程。它们实际上是在循环中运行,发出远远超出事件循环开始的信号,还是它们完成得太快?
标签: python multithreading qt pyqt pyqt4