Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 6, 2014 12:07:12

Megido
От:
Зарегистрирован: 2010-03-26
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 QProcess не верно завершается

Вот основная часть треда в каком запускается 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 (Фев. 6, 2014 12:12:42)

Офлайн

#2 Фев. 6, 2014 19:21:55

Megido
От:
Зарегистрирован: 2010-03-26
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 QProcess не верно завершается

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

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







Офлайн

#3 Фев. 6, 2014 19:58:42

Megido
От:
Зарегистрирован: 2010-03-26
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 QProcess не верно завершается

еще 1 интересный момент, даже если процесс логически завершился он продолжает работать



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version