Dobrý deň,
programujem v pyqt5 aplikaciu a potrebujem spustit cast programu(deep learning) v inom procese alebo vlakne.
skusam QThread, QThreadPool, QProcess, ale stale neúspešne.
ďakujem rady.
learning = Learning(
dataset_path=str(self.__le_dataset_path.text()),
model_path=str(self.__le_model_path.text()),
kernel=int(self.__lcd_kernel.value()),
img_size=int(self.__lcd_img_size.value()),
color_channel=int(self.__lcd_color_channel.value()),
pooling=int(self.__lcd_pooling.value()),
classes=int(self.__lcd_classes.value()),
batch_size=int(self.__lcd_batch_size.value()),
epochs=int(self.__lcd_epochs.value()),
y_activation=str(self.__cmb_y_activation.currentText()),
loss=str(self.__cmb_loss.currentText()),
optimizer=str(self.__cmb_optimizer.currentText()),
color_mode=str(self.__cmb_color_mode.currentText()),
class_mode=str(self.__cmb_class_mode.currentText())
)
process = QProcess()
process.start(learning.run_process())
process.startDetached()
#3 gna
run_process je zavolana metoda z triedy Learning. Potrebujem spustit ucenie v inom vlakne alebo inom procese, pretoze mi zatazuje GUI.
learning = Learning(
dataset_path=str(self.__le_dataset_path.text()),
model_path=str(self.__le_model_path.text()),
kernel=int(self.__lcd_kernel.value()),
img_size=int(self.__lcd_img_size.value()),
color_channel=int(self.__lcd_color_channel.value()),
pooling=int(self.__lcd_pooling.value()),
classes=int(self.__lcd_classes.value()),
batch_size=int(self.__lcd_batch_size.value()),
epochs=int(self.__lcd_epochs.value()),
y_activation=str(self.__cmb_y_activation.currentText()),
loss=str(self.__cmb_loss.currentText()),
optimizer=str(self.__cmb_optimizer.currentText()),
color_mode=str(self.__cmb_color_mode.currentText()),
class_mode=str(self.__cmb_class_mode.currentText())
)
process = QProcess()
process.start(learning.run_process())
process.startDetached()
#6 daniel
my to chápeme ... třeba tady máš příklad:
https://www.learnpyqt.com/courses/concurrent-execution/multithreading-pyqt-applications-qthreadpool/
a tady další
https://stackoverflow.com/questions/6783194/background-thread-with-qthread-in-pyqt
#6 daniel
Nechápu, co jsi tím chtěl říct. Konstrukce
process.start(learning.run_process())
znamená, že se provede run_process a návratová hodnota se použije jako parametr pro start. Pravděpodobně se pokoušíš o nesmysl, ale to se nedozvíme, protože nemáš potřebu objasnit, co je zač ta třída Learning. A volání starDetachech po start je rozhodně nesmysl.
Takže můžu jen střelit od boku a zkusit vlákno:
import threading
thread = threading.Thread(target=learning.run_process)
thread.start()
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku