Я пытаюсь создать приложение на Python, использующее PyQt, которое может извлекать сгенерированное содержимое списка URL-адресов и обрабатывать извлеченный источник с помощью нескольких потоков.Мне нужно запустить около десяти QWebView одновременно.Как бы нелепо это ни звучало, когда речь идет о сотнях URL-адресов, использование многопоточных QWebViews дает результаты в 3 раза быстрее, чем обычно.
Вот тестовый код, с которым у меня были проблемы ...
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
class Worker(QThread):
def __init__(self, url, frame):
QThread.__init__(self)
self.url = url
self.frame = frame
def run(self):
self.frame.load(QUrl(self.url))
print len(self.frame.page().mainFrame().toHtml())
app = QApplication(sys.argv)
webFrame = QWebView()
workerList = []
for x in range(1):
worker = Worker('http://www.google.com', webFrame)
workerList.append(worker)
for worker in workerList:
worker.start()
sys.exit(app.exec_())
Выше я попытался инициализировать QWebView в главном QApplication только для получения:
QObject: Cannot create children for a parent that is in a different thread.
Итак, я попытался инициализировать QWebView в QThread ;но затем QWebView остался неизменным и пустым без вывода каких-либо ошибок или чего-либо еще.Вероятно, это произошло из-за ошибки в кэше.
У меня такое ощущение, что я что-то упускаю или пропускаю очень важный шаг.Поскольку потоковые QWebViews в PyQt не являются действительно документированной темой, я был бы очень признателен за любую помощь в том, как успешно реализовать это.