У меня есть ситуация, когда мне нужно запустить два потока один за другим. Я попробовал следующий фрагмент кода, здесь я смог запустить Thread12, но не смог запустить Thread2. Как я могу запустить оба ....? Как запустить 2 потока один за другим...?
Фрагмент кода
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()_)
Worker
классов, сколько хотите, создавая подклассы изQRunnable
вместоQThread
, а затем вызывая изTasks
17.12.2012QThread
для моего запроса...? Вместо этого мне нужно использоватьQRunnable
. Какая разница междуQRunnable
иQThread
17.12.2012QThreadPool
, который принимаетQRunnable
, но неQThread
, или отправить сигнал processEnded от каждогоQThread
и подключить его к слоту, который запускает следующийQThread
17.12.2012QThreads
одновременно не должен быть проблемой, перепроверьте свой фактический код, если вы не можете, вы все равно можете использоватьQThreadPool
, просто пропустите частьself.pool.setMaxThreadCount(1)
17.12.2012self.pool.setMaxThreadCount(1)
наself.pool.setMaxThreadCount(2)
, так как у меня есть два определения для запуска в двух потоках... 17.12.2012