python – PySide / PyQt中的安全和惰性方法调用
我正在使用PySide管理一些硬件并执行一些相对简单的操作,具体取决于(例如)界面中的按钮点击.运行这些硬件的代码驻留在另一个线程中.为方便起见,对于所有这些硬件驱动程序,我添加了一个通用的invoke_method信号,以便UI组件可以使用
显然,这会直接访问其他线程中的信号属性….但我不确定这在GIL世界中是否一定正常. 如果这确实是一个太懒的解决方案 – 是否有任何其他很好的替代方案可以在任意线程中调用任意方法而不必在UI中连接到驱动程序中的另一个信号的特定于操作的信号? 我可以想象在每个UI代码中使用一个信号来访问不同的硬件 – 比如do_invocation_driver_1和do_invocation_driver_2,并将它们连接到相应驱动程序的invoke_method信号. 最佳答案
我建议阅读this post以获得使用PyQt GUI连接线程的一般方法.该帖子讨论了一个执行套接字I / O的线程,但这确实适用于任何线程.具体来说,硬件接口线程通常也使用I / O,因此这可能是一个很好的选择.
所讨论的方法是非常通用的,使用Queue.Queue,对于简单任务来说可能看起来有点过分(但我只是想在一个线程中调用“那个”函数).但是,一旦您的应用程序变得非常重要,您将会欣赏它,因为它可以避免任何线程同步问题,并且具有很高的可扩展性.我个人用它来实现复杂的PyQt GUI,边线做各种各样的东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python通过urllib2爬网页上种子下载示例
- Django:如何在单元测试中隐藏Traceback以提高可读性?
- python – Blender可以根据文本文件生成场景吗?
- python使用xpath中遇到:<Element a at 0x39a9a80>到底是
- 如何通过python API将json / pickle文件转储并读入Google D
- python2 和 python3共存的常见使用(如安装虚拟环境的问题)
- python 文件与目录操作
- python – matplotlib – 直接在画布上绘图
- Python random模块制作简易的四位数验证码
- python – 访问结构化数组的NumPy数组的列