PyQT открыть несколько сайтов одновременно

Я хочу войти на несколько адресов электронной почты с помощью pyqt, проблема в том, что я хочу войти на них одновременно, я знаю, что это может быть достигнуто с помощью многопоточной обработки, а не многопоточности ( Python Webdriver Multithread), многопоточность Threading в Python будет входить один за другим, мне нужно, чтобы запустить все сайты сразу и начать передавать переменные в него.. Я новичок в Qt. У меня есть это в качестве модели:

Один из кодов, которые я попробовал:

import sys
import urllib2
from PyQt4 import QtCore, QtGui
class SignalHelper(QtCore.QObject):
    data_downloaded = QtCore.pyqtSignal(object)
class DownloadThread(QtCore.QRunnable):
    def __init__(self, url):
        QtCore.QRunnable.__init__(self)
        self.url = url
        self._signal_helper = SignalHelper()
        self.data_downloaded = self._signal_helper.data_downloaded
    def run(self):
        print 'thread', QtCore.QThread.currentThread()
        info = urllib2.urlopen(self.url).info()
        self.data_downloaded.emit('%s\n%s' % (self.url, info))
class MainWindow(QtGui.QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.list_widget = QtGui.QListWidget()
        self.button = QtGui.QPushButton("Start")
        self.button.clicked.connect(self.start_download)
        layout = QtGui.QVBoxLayout()
        layout.addWidget(self.button)
        layout.addWidget(self.list_widget)
        self.setLayout(layout)
        ## Thread pool with maximum 5 simultaneously running threads
        self.thread_pool = QtCore.QThreadPool()
        self.thread_pool.setMaxThreadCount(5)
    def start_download(self):
        urls = ['https://mail.yahoo.com', 'https://mail.google.com', 'https://mail.yandex.com/', 'https://login.live.com', 'http://www.gmx.com/']
        for url in urls:
            downloader = DownloadThread(url)
            downloader.data_downloaded.connect(self.on_data_ready)
            self.thread_pool.start(downloader)
    def on_data_ready(self, data):
        self.list_widget.addItem(data)
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.resize(640, 480)
    window.show()
    sys.exit(app.exec_())

Я хочу знать, запускает ли Qt эти потоки и запускает ли их параллельно.. не один за другим. Может кто-нибудь дать мне пример? И как, черт возьми, я заполняю каждого данными...

0 ответов

Другие вопросы по тегам