Найти - Пользователи
Полная версия: PyQt4 QProcess не верно завершается
Начало » GUI » PyQt4 QProcess не верно завершается
1
Megido
Вот основная часть треда в каком запускается 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]


на этот слот повешен клик по кнопке Exit
[code python]
def appExit(self):
self.t.process.kill()
sys.exit()
[/code]

При запуске программы видим в процессах
casperjs и phantomjs

если закрыть программу casperjs убивается а phantomjs остается

Аналогичное происходит если в процессе запускать шел скрипт с какой нибудь долгоиграющей командой внутри
например


chcp 1251
ping -n 1000 ya.ru

когда прогу закрываеш PING.exe продолжает висеть в процессах



если кто не понял откуда взялся phantomjs обьясняю, каспер это обертка для фантома и работает он через него. Тобиш потух каспер - потух фантом, так должно быть.













Megido
быстренько переписал скрипт под куте5.
частично решил проблему. Там все процессы завершаются если закрыть программу обычными методами.
Например закрыть окно или ^break

но если закрывать программу через sys.exit() то потоки продолжают работать, ну по крайнем мере дочерние





Megido
еще 1 интересный момент, даже если процесс логически завершился он продолжает работать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB