Запуск потоков из цикла (QThread)

Рейтинг: 0Ответов: 1Опубликовано: 27.01.2023

Есть класс Thread_Worker (QThread), в котором происходит основная логика. В функции run() цикл.

class Thread_Worker(QThread):
    def __init__(self, captcha_key, acc_data, rowPosition, ua, comment_kolvo, comment_kd, kd_potok):
        super().__init__()
        print('Thread ID: ' + str(QtCore.QThread.currentThreadId()))
        self.signals = WorkerSignals()
        self.captcha_key = captcha_key
        self.acc_data = acc_data
        self.rowPosition = rowPosition
        self.ua = ua
        self.comment_kolvo = comment_kolvo
        self.comment_kd = comment_kd
        self.kd_potok = kd_potok
        self.run()

    def text_randomization(self):
        ###
    # получение owner_id группы
    def get_owner_id(self, bruh):
        ###
    # получение post_id поста
    def get_post_id(self, bruh):
        ###
    def run(self):
        ### цикл

Из основного класса запускаю такой цикл:

    for i in range(len(accs)):
        with open('ua.txt') as uaa:
            u = uaa.readlines()
            gua = str(u[:i + 1][0])
        ua = str(u[:i + 1][0]).split('\n')[0]
        with open('ua.txt', 'w') as g_f:
            for o in u:
                if o == gua:
                    continue
                else:
                    g_f.writelines(o)

        login = accs[i].split('\n')[0].split(':')[0]
        print(login)
        rowPosition = self.ui.tableWidget.rowCount()
        print(rowPosition)
        self.ui.tableWidget.insertRow(rowPosition)
        self.ui.tableWidget.setItem(rowPosition, 0, QTableWidgetItem(login))
        self.ui.tableWidget.setItem(rowPosition, 1, QTableWidgetItem('В ожидании'))
        self.ui.tableWidget.setItem(rowPosition, 2, QTableWidgetItem('0'))
        Thread_Worker(acc_data=accs[i], captcha_key=captcha_k, comment_kd=cooldown, comment_kolvo=comments_count, kd_potok=rotacia_kd, rowPosition=rowPosition, ua=ua).start()

В итоге потоки не запускаются одновременно, а поочередно, после завершения предыдущего потока. Собственно вопрос, как можно сделать так, чтобы потоки запускались одновременно? Я новичок в PyQt и в ООП в целом, буду рад любым советам.

Ответы

▲ 0

Спасибо комментатору gil9red. Стоило просто убрать self.run()