Форум сайта python.su
Вот основная часть треда в каком запускается qprocess и идет обработка его вывода
[code python]
class T(QtCore.QThread):
outputReady = QtCore.pyqtSignal(object)
errorReady = QtCore.pyqtSignal(object)
inputNeeded = QtCore.pyqtSignal(object)
def __init__(self):
super(T, self).__init__()
self.process = QtCore.QProcess()
self.process.moveToThread(self)
self.signal = QtCore.SIGNAL("signal")
self.connect(self.process,SIGNAL("readyReadStandardOutput()"),self,SLOT("onReadyRead()"))
self.connect(self.process,SIGNAL("started()"),self,SLOT("onStarted()"))
self.connect(self.process, QtCore.SIGNAL("readyReadStandardError()"),self,SLOT("readStdErr()"))
self.connect(self.process,SIGNAL("readyReadStandardOutput()"),self,SLOT("onReadyRead()"))
def run(self):
cmd="casperjs %s"%(js)
self.process.start(cmd);
# self.process.waitForFinished()
[/code]
[code python]
def appExit(self):
self.t.process.kill()
sys.exit()
[/code]
Отредактировано Megido (Фев. 6, 2014 12:12:42)
Офлайн
быстренько переписал скрипт под куте5.
частично решил проблему. Там все процессы завершаются если закрыть программу обычными методами.
Например закрыть окно или ^break
но если закрывать программу через sys.exit() то потоки продолжают работать, ну по крайнем мере дочерние
Офлайн
еще 1 интересный момент, даже если процесс логически завершился он продолжает работать
Офлайн