我正在使用PySide管理一些硬件并执行一些相对简单的操作,具体取决于(例如)界面中的按钮点击.运行这些硬件的代码驻留在另一个线程中.为方便起见,对于所有这些硬件驱动程序,我添加了一个通用的invoke_method信号,以便UI组件可以使用
@H_301_5@my_driver.invoke_method.emit('method_name',[arg,...],{kwarg,...})
显然,这会直接访问其他线程中的信号属性….但我不确定这在GIL世界中是否一定正常.
如果这确实是一个太懒的解决方案 – 是否有任何其他很好的替代方案可以在任意线程中调用任意方法而不必在UI中连接到驱动程序中的另一个信号的特定于操作的信号?
我可以想象在每个UI代码中使用一个信号来访问不同的硬件 – 比如do_invocation_driver_1和do_invocation_driver_2,并将它们连接到相应驱动程序的invoke_method信号.
最佳答案