Как внедрить многопоточность в pyqt?

Пользователь

от rebekah , в категории: Python , 8 месяцев назад

Как внедрить многопоточность в pyqt?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от otha_marks , 8 месяцев назад

@rebekah 

В PyQt многопоточность может быть внедрена с помощью класса QThread. Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
from PyQt5.QtCore import QThread, pyqtSignal

class WorkerThread(QThread):
    finished = pyqtSignal()

    def __init__(self):
        super().__init__()

    def run(self):
        # Выполнить задачу в фоновом потоке
        self.finished.emit() # Сигнал о завершении потока

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.thread = WorkerThread()
        self.thread.finished.connect(self.on_thread_finished)

    def on_thread_finished(self):
        # Обработать завершение потока

    def start_thread(self):
        self.thread.start() # Запуск потока


Здесь класс WorkerThread является подклассом QThread и содержит метод run, который выполняет задачу в фоновом потоке. Сигнал finished отправляется при завершении потока. Класс MainWindow использует экземпляр WorkerThread для запуска процесса в потоке и обрабатывает завершение работы потока в методе on_thread_finished.