python pyqt ui卡住的问题
我一个爬虫程序。
shell 下运行 没有中断。一直在爬。效果还不错 因为直接关掉shell 或IDE 就可以结束了
现在我加上了pyqt 界面。 运行时候UI 会一直卡住。导致我没办法把状态信息发送到UI 根本看不到。一直处在无响应的状态 这样太影响用户体验了。
我把爬虫程序 封装在了一个类里。 然后在ui里调用他。
网上找了很多资料 说是用多线程 或多进程。 然后关掉线程。 还有说是要用异步。搞的我晕晕的。
说我要是用多线程 就要在爬虫里 每句话都要加一个判断。我觉得这太扯了。
请大神给个建议。 能提供一个实例的话 那就十分感谢了!~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
threading + signal
UI是在主线程里面实现,worker线程与主线程分离就可以
引用来自“Feng_Yu”的评论
GUI编程都会遇到的问题——多线程操作。因为你将逻辑处理和UI放在了一个线程中,导致UI刷新遇到了阻塞,所以会看到GUI卡死,等你的逻辑代码执行完毕之后才会恢复响应。
解决方案就是把你的逻辑代码单独开一个线程去执行,让窗体线程不要被阻塞
窗口应用程序都是单线程时间机制的,所以不能在其中编写阻塞逻辑,否则会导致界面失去相应。
在IO操作频繁的地方,开启新的线程处理逻辑即可。
多进程,功能归功能,界面归界面,用用管道什么的通信
必须要多线程实现,还是多搜资料吧
GUI编程都会遇到的问题——多线程操作。因为你将逻辑处理和UI放在了一个线程中,导致UI刷新遇到了阻塞,所以会看到GUI卡死,等你的逻辑代码执行完毕之后才会恢复响应。
解决方案就是把你的逻辑代码单独开一个线程去执行,让窗体线程不要被阻塞