我正在尝试使用PyQt在Python中创建一个应用程序,它可以获取URL列表的生成内容,并在多个线程的帮助下处理获取的源。我需要一次运行大约十个QWebViews。听起来很荒谬,当谈到数百个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_())
上面,我尝试初始化 QApplication 中的 QWebView ,只是为了得到:
QObject: Cannot create children for a parent that is in a different thread.
然后我尝试在 QThread 中初始化 QWebView ;但是, QWebView 保持不变并且空白而没有输出任何错误或任何内容。这可能是由于缓存错误造成的。
我觉得我错过了某些事情或者跳过了非常重要的一步。由于PyQt 中的线程QWebViews不是一个真正记录的主题,我真的很感激如何成功实现它。
答案 0 :(得分:4)
您的问题和代码存在多个问题: