У меня есть рабочий код для обучения нейронной сети. Теперь я хочу создать графический интерфейс TkInter, чтобы иметь возможность, например, изменять параметры на лету. Я представляю, что это похоже на пульт дистанционного управления. Но я изо всех сил пытаюсь получить отзывчивый интерфейс. Обучение одной эпохи займет пару минут, и я не смогу перехватить.
Я видел много примеров использования метода .after () для обновления часов в графическом интерфейсе, которыйхорошо, потому что обновление не занимает минут. Я не могу заставить его работать, когда обратный вызов занимает минуты.
Я воссоздал свою проблему с минимальным количеством кода:
from time import sleep
import tkinter as tk
def trainEpoch(i):
print ("Training", i)
sleep(1) #in reality more like sleep(300)
def clickBtn():
print ("Button pressed")
root = tk.Tk()
btn = tk.Button(root, text="Click Me", command=clickBtn)
btn.grid(column=0, row=0)
for i in range (5):
trainEpoch(i)
print ("finished" )
root.mainloop()
Этот код сначала "обучает" сеть,затем создает отзывчивое окно TkInter (которое я полностью понимаю). Просто чтобы прояснить, я хочу следующее поведение: я хочу, чтобы графический интерфейс открывался до начала тренировки и был активным, когда тренировка делает свое дело. Мне все равно, если он будет уничтожен впоследствии.
Нужно ли мне многопоточность для такого рода проблемы?
С уважением, Лев