Я пишу программу GUI, используя PyQt4. В моем главном окне есть кнопка и нажав эту кнопку. Я надеюсь запустить фоновый процесс который является экземпляром производного класса from processing.Process.
class BackgroundTask(processing.Process):
def __init__(self, input):
processing.Process.__init__(self)
...
def run(self):
...
(Обратите внимание, что я использую порт Python2.5 полученной многофакторной обработки питона из 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_()
Какие-нибудь решения по устранению этой проблемы? Спасибо!