Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在QWebViews中设置多个多线程PyQt?

如何在QWebViews中设置多个多线程PyQt?
EN

Stack Overflow用户
提问于 2011-08-21 20:11:57
回答 1查看 1.5K关注 0票数 0

我试图使用PyQt在Python中创建一个应用程序,该应用程序可以获取URL列表中生成的内容,并在多个线程的帮助下处理获取的源代码。我需要一次跑大约10 QWebViews。尽管这听起来很荒谬,但当涉及到数百个URL时,使用线程QWebViews获得的结果比正常速度快3倍以上。

这是我一直有问题的测试代码.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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中初始化该QApplication,但只得到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QObject: Cannot create children for a parent that is in a different thread.

因此,我尝试在QThread中初始化QThread;但之后,QWebView保持不变,空白,没有输出任何错误或任何内容。这可能是由于缓存错误造成的。

我有一种感觉,我错过了某件事,或者跳过了一个非常重要的一步。由于PyQt中的线程化的PyQt并不是一个真正有文档记录的主题,所以我非常希望就如何成功地实现这个问题提供任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 05:46:31

您的问题和代码有多个问题:

  • 您正在谈论的是QWebFrame,但实际上是将QWebView传递给您的员工。由于这是一个workers.
  • QWebFrame.load(),所以它属于主(GUI)线程,不应该被其他线程修改。
  • one QWebView / QWebFrame一次只能加载一个URL,因此您不能在多个QWidget加载数据之间异步共享它,即调用load()立即返回,并且还没有数据可读取。您必须等待发出loadFinished()信号,然后才能访问数据。
  • ,因为实际加载是由操作系统的网络层完成的,而且load()方法没有阻塞,因此首先不需要在单独的线程中运行它。为什么你声称这应该更快--这是没有意义的。
  • ,因为你想并行加载数百个URL(或者说在同一个句子中提到了大约10个URL),你确定要使用QWebFrame,它是一个演示类吗?您实际上希望呈现HTML,还是只对检索的数据感兴趣?
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7143088

复制
相关文章
泛型接口,泛型类和泛型通配符
泛型的使用位置,除了最常见的约束集合元素,还可以使用在接口,类,方法上面。最本质的原因就是为了在使用接口,类,方法的时候,可以将类型作为参数,进行类型的参数传递。这样可以使程序的编写更加的灵活,在创建对象,调用方法的时候动态的指定类型,所以泛型也可以理解为类型的参数化。
用户5745563
2019/07/04
2.4K0
泛型接口,泛型类和泛型通配符
Dart中的泛型方法、泛型类、泛型接口
为了能在一个方法里实现传入什么数据类型就返回什么数据类型,可以利用泛型将方法写成下面这样:
越陌度阡
2020/12/10
3.8K0
Dart中的泛型方法、泛型类、泛型接口
Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符
例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做泛型。
冷环渊
2021/11/29
3.5K0
Java进阶:【泛型】认识泛型,泛型方法,泛型类,泛型接口和通配符
Java泛型基础(二)泛型接口泛型方法# 总结
泛型可以应用于同一个类,该类可以针对多种类型使用,例如构建一个RedisTemplateService组件,用于处理当前应用中所有对象的缓存操作。这篇文章主要介绍泛型应用于接口、方法和匿名内部类的一些知识点和使用案例,也包括《Java编程思想》中对应的练习题的解读。
阿杜
2018/08/06
3.3K0
Java——泛型基本总结(通配符、泛型接口、泛型方法)
假如,现在定义一个表示坐标的类,Point,属性坐标x,y,但是此类设计特殊,现在由于设计特殊,现在实际使用中有可能出现以下三种结构的数据:
Winter_world
2020/09/25
3.4K1
Java——泛型基本总结(通配符、泛型接口、泛型方法)
Java 泛型示例 - 泛型方法,类,接口
如果您一直在使用Java Collections并使用版本 5 或更高版本,那么我确定您已经使用过它。
淡定的蜗牛
2019/10/25
2.6K0
【Kotlin】泛型 ① ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 )
将 泛型参数 T 放在 尖括号 <T> 中 , 该泛型参数放在 类名后 , 主构造函数之前 , 该泛型参数 T 是 类型占位符 ,
韩曙亮
2023/03/30
2.9K0
C#里面的泛型(T),泛型类,泛型方法,泛型接口等简单解释
只是比较简单的解释,在实际使用中,如果遇到需要深入研究的场景,再翻阅相关资料深入研究下。
zls365
2020/08/19
4.2K0
Java 继承泛型类和实现泛型接口
泛型也可以继承和实现接口 public class Test{ public static void main(String[] args) { } } class Father<T>{ } interface ARB<E>{ } class child<T,E> extends Father<T> implements ARB<E>{ } 泛型继承的四种情况 全部继承 子类泛型可以比父类多 public class Test{ public static void m
用户2965768
2019/03/08
6.8K0
Java 继承泛型类和实现泛型接口
TypeScript中泛型及泛型函数、泛型类、泛型接口,泛型约束,一文读懂
 最近在学TypeScript,然后整理了一下关于TypeScript中泛型的一些笔记。
痴心阿文
2022/11/21
2.8K0
【Kotlin】泛型总结 ★ ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 | 可变参数结合泛型 | out 协变 | in 逆变 | reified 检查泛型参数类型 )
将 泛型参数 T 放在 尖括号 <T> 中 , 该泛型参数放在 类名后 , 主构造函数之前 , 该泛型参数 T 是 类型占位符 ,
韩曙亮
2023/03/30
4.1K0
【Kotlin】泛型总结 ★ ( 泛型类 | 泛型参数 | 泛型函数 | 多泛型参数 | 泛型类型约束 | 可变参数结合泛型 | out 协变 | in 逆变 | reified 检查泛型参数类型 )
Java泛型接口的使用
在上面的示例中,IX2MqToThirdBaseBiz<S, T>接口被实现为MyX2MqToThirdBaseBiz类,并且指定了S类型为String,T类型为Integer。这样,在实现类中的sendMessage方法就接受String类型的参数,而receiveMessage方法返回Integer类型的值。
高久峰
2023/09/08
2420
【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 ;
韩曙亮
2023/03/29
15.6K0
【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )
C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托
给.neter们整理了一份《.NET/C#面试手册》,目前大约4万字左右,初衷也很简单,就是希望在面试的时候能够帮助到大家,减轻大家的负担和节省时间。对于没有跳槽打算的也可以复习一下相关知识点,就当是查缺补漏!
全栈程序员站长
2022/09/14
2.6K0
C#泛型入门泛型类、泛型集合、泛型方法、泛型约束、泛型委托
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
泛型类用法 : 使用时先声明泛型 , 如果不声明泛型 , 则表示该类的泛型是 Object 类型 ;
韩曙亮
2023/03/29
10.2K0
【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
C#内建接口:IEquatable泛型
IEquatable泛型接口处于System.Runtime命名空间下,最早在.NET Framework 2.0中发布,只有泛型版本。像之前我们讲过的IComparable,IEnumerable接口,它们属于是1.0时期的内建接口,那时C#还没有泛型的概念,而2.0以后的版本,才有泛型的概念。之所以出现泛型接口,是因为通过泛型可以减少值类型的装箱,以及实现类型安全。
宿春磊Charles
2022/06/17
5880
C#内建接口:IEquatable泛型
泛型(泛型擦除)【java基础—-泛型】
Java泛型是J2 SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(type parameter),这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
全栈程序员站长
2022/11/02
2.7K0
泛型(泛型擦除)【java基础—-泛型】
Golang 使用接口实现泛型
在C/C++中我们可以使用泛型的方法使代码得以重复使用,最常见例如stl functions:vectorvint or vectorvfloat等。这篇文章将使用interface{…}接口使Golang实现泛型。
李海彬
2019/05/08
2K0
Golang 使用接口实现泛型
Java 泛型擦除_泛型和泛型擦除
如果仅凭直觉来看,该程序可能会输出 false 这个结果,但在具体的环境下运行时会输出 true 。这很令人费解,这是为什么呢?
全栈程序员站长
2022/11/01
2.4K0
【Flutter】Dart 泛型 ( 泛型类 | 泛型方法 | 特定类型约束的泛型 )
泛型作用 : 为 类 , 接口 , 方法 提供复用性 , 支持类型不确定的数据类型 ;
韩曙亮
2023/03/28
5.4K0

相似问题

具有泛型参数的接口与具有泛型方法的接口

40

继承具有不同泛型参数的泛型接口

12

具有泛型接口的泛型方法

10

通用接口,泛型接口与泛型接口

21

实现以泛型接口作为参数的泛型接口

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文