Я пишу программу с графическим интерфейсом, используя PyQt4.
В моем главном окне есть кнопка
и нажав эту кнопку.
Я надеюсь запустить фоновый процесс
который является экземпляром класса, производного
из обработки. Процесс.
class BackgroundTask(processing.Process):
def __init__(self, input):
processing.Process.__init__(self)
...
def run(self):
...
(Обратите внимание, что я использую порт Python2.5
полученной многопроцессорной обработки python
от
http://code.google.com/p/python-multiprocessing/
именно поэтому он обрабатывает. Процесс
вместо многопроцессорной обработки. Процесс.
Я думаю, это не должно иметь значения.
Я прав?)
Код, связанный с сигналом нажатия кнопки
это что-то вроде
processing.freezeSupport()
task = BackgroundTask(input)
task.start()
Программа работает, как и ожидалось, под интерпретатором Python, т.е.
если он запускается из командной строки "python myapp.py".
Однако, после того, как я упакую программу, используя py2exe,
каждый раз, когда я нажимаю эту кнопку, вместо
запуска фоновой задачи, копия
главного окна выскакивает. я не уверен
в чем причина такого поведения. Похоже
это связано со следующей запиской
в
http://docs.python.org/library/multiprocessing.html#multiprocessing-programming
"Функциональность в этом пакете требует, чтобы метод main был импортирован детьми. Это описано в Руководстве по программированию, однако на это стоит обратить внимание. Это означает, что некоторые примеры, такие как многопроцессорная обработка. Примеры пулов не будут работать в интерактивном переводчике
«
Единственное место, которое у меня есть, если name == " main " находится в главном модуле
как в типичной программе pyqt
if __name__ == "__main__":
a = QApplication(sys.argv)
QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()"))
w = MainWindow()
w.show()
a.exec_()
Есть какие-нибудь решения, как решить эту проблему? Спасибо!