我正在使用Python和wx Simple Wizard进行项目。在我的向导中,当移动到第四页和最后一页时,它将启动一个名为beginCreateInstallation()的方法。这反过来为文件副本创建了一个单独的线程(以及其他一些小的文件),但也使向导线程保持活动状态。
以下是方法:
def beginCreateInstallation(self, parent):
'''Install the files to the drive. We need to do this
in a thread so the gui continues to update.
'''
#Disable the buttons so they can't move.
wx.FindWindowById(wx.ID_BACKWARD).Disable()
wx.FindWindowById(wx.ID_FORWARD).Disable()
#Start the thread
#from installer import createInstall
createInstallThread = threading.Thread(target=self.Installer.createInstall, args=[parent, self.selectedDrive])
createInstallThread.setDaemon(True)
try: createInstallThread.start()
except: print "Boom goes the dynamite."
运行的线程是Installer.createInstall。在createInstall()的末尾,它在原始类中调用一个名为installComplete()的方法。
因此,在线程结束时,它调用父方法,然后应该死。
这在Windows上工作正常,但在OSX上我收到总线错误和“内核保护错误”。
如果我杀死线程,并将跟随行添加到beginCreateInstall()的底部,我添加以下行:
createInstallThread.join()
self.installComplete()
反过来杀死了线程并冻结了向导,但我没有收到总线错误。
任何有助于此线程工作的帮助?我可以在哪里使用线程来处理OSX?
先谢谢。