我正在编写一个 GUI 应用程序,通过网络连接定期检索数据。由于这个检索需要一段时间,这会导致 UI 在检索过程中没有响应(它不能被拆分成更小的部分)。这就是为什么我想外包的网络连接到一个单独的工作线程。
[是的,我知道,现在我有 两个问题。]
无论如何,应用程序使用 PyQt4,所以我想知道更好的选择是: 使用 Qt 的线程还是使用 Python threading
模块?每种方法的优缺点是什么?还是你有完全不同的建议?
编辑(重新赏金) : 虽然在我的特殊情况下,解决方案可能是使用非阻塞网络请求,如 Jeff Ober和 Luká Lalinský所建议的(所以基本上把并发问题留给网络实现) ,我仍然希望对一般问题有一个更深入的答案:
在本机 Python 线程(来自 threading
模块)上使用 PyQt4(即 Qt)线程的优缺点是什么?
编辑2: 感谢你们所有人的回答。虽然没有100% 的一致意见,但是答案似乎是“使用 Qt”,因为这样做的好处是与库的其他部分集成,而不会造成真正的缺点。
对于那些希望在两个线程实现之间做出选择的人,我强烈建议他们阅读这里提供的所有答案,包括 方丈链接到的 PyQt 邮件列表线程。
关于赏金,我考虑了几个答案; 最后,我选择了方丈的答案,作为非常相关的外部参考; 然而,这是一次侥幸的机会。
再次感谢。