我想在 PyQt5 中实现线程,线程用于长时间但不昂贵的操作。我阅读了很多论坛、文档、问题,但没有完全理解什么是最好使用的。我尝试实现线程:
- 通过分类 from
QThread
和重写run
. - 从 分类
QObject
,定义方法 和moveToThread()
。
这两种方法都是成功的,但是它们都有各自的缺点。
通过实现QThreadPool
。虽然这看起来是最简单的方法,但它允许您从任何地方将任何函数(包括带有参数的函数)发送到流。
但与此同时,QThreadPool
在有关流的问题中很少提及对象本身;每个人都建议使用其他方法。那么问题来了,为什么会这样呢?也许我遗漏了一些非常重要的东西,这些东西会影响代码稍后的工作方式?
在搜索更多论坛/文档后,我发现
因此,事实上,对于最新版本的 PyQt,您可以通过 QThreadPool 创建线程,而无需不必要的麻烦