我试图获得一些pyqt线程池并处理工作但遇到了一些问题,并且想知道是否有人可以提供帮助。
我已经简化了代码并将其包含在此处。
当您运行以下操作时,似乎started()
方法似乎每次进程都会被调用两次,这不是我期望的。
此外,当进程仍在运行时,我收到错误QProcess: Destroyed
。
任何人都可以告诉我为什么会发生这种情况?
运行startDetached()
使代码可以工作,但由于它没有返回对象,我失去了使用信号的所有能力。
任何帮助将非常感激。
非常感谢
import sys
from PyQt4 import QtGui,QtCore
class Test(object):
def __init__(self):
self.elements = []
for i in range(5):
self.elements.append(Element(i))
def run(self):
pool = QtCore.QThreadPool()
pool.setMaxThreadCount(1)
for element in self.elements:
pool.start(element.worker)
pool.waitForDone()
class Worker(QtCore.QRunnable):
def __init__(self):
super(Worker, self).__init__()
class Element(object):
def __init__(self, number):
self.number = number
self.worker = Worker()
self.worker.run = self.run
def run(self):
process = QtCore.QProcess()
def started():
print "Started"
process.started.connect(started)
process.start('echo', 'hello')
app = QtGui.QApplication(sys.argv)
test = Test()
test.run()
widget = QtGui.QWidget()
widget.show()
app.exec_()