Я создаю приложение с помощью wxPython и модели глубокого обучения, которую я создал с помощью Tensorflow. Я использую шаблон проектирования MVC. Моя проблема в том, что модель глубокого обучения очень тяжелая, и для ее загрузки требуется очень много времени (около 2 минут), а тем временем графический интерфейс зависает. Я создал пример кода, который описывает процесс. Вот как выглядит графический интерфейс при загрузке:
введите здесь описание изображения
и вот как выглядит графический интерфейс после загрузки: введите здесь описание изображения
Вопрос в том, как заставить приложение работать во время загрузки модели? Я также хотел бы добавить в графический интерфейс строку состояния, указывающую, что модель загружается или уже загружена.
Я добавляю пример кода, показывающий, как создается мое приложение.
import wx
import time
class Model:
def __init__(self):
'''This part is simulating the loading of tensorflow'''
x = 0
while x < 15:
time.sleep(1)
print(x)
x += 1
class View(wx.Frame):
def __init__(self, parent, title):
super(View, self).__init__(parent, title=title, size=(400, 400))
self.InitUI()
def InitUI(self):
# Defines the GUI controls
masterPanel = wx.Panel(self)
masterPanel.SetBackgroundColour("gold")
self.vbox = wx.BoxSizer(wx.VERTICAL)
self.fgs = wx.FlexGridSizer(6, 2, 10, 25)
id = wx.StaticText(self, label="ID:")
firstName = wx.StaticText(self, label="First name:")
lastName = wx.StaticText(self, label="Last name:")
self.idTc = wx.TextCtrl(self)
self.firstNameTc = wx.TextCtrl(self)
self.lastNameTc = wx.TextCtrl(self)
self.fgs.AddMany([id, (self.idTc, 1, wx.EXPAND),
firstName, (self.firstNameTc, 1, wx.EXPAND),
lastName, (self.lastNameTc, 1, wx.EXPAND)])
self.vbox.Add(self.fgs, proportion=1, flag=wx.ALL | wx.EXPAND,
border=15)
self.SetSizer(self.vbox)
self.vbox.Fit(self)
self.Layout()
class Controller:
def __init__(self):
self.view = View(None, title='Test')
self.view.Show()
self.model = Model()
def main():
app = wx.App()
controller = Controller()
app.MainLoop()
if __name__ == '__main__':
main()