私はいくつかのハードウェアを管理するためにPySideを使用しており、インターフェイスのボタンのクリックなどに応じて比較的単純な操作を実行しています。これらのハードウェアのそれぞれを実行するためのコードは別のスレッドにあります。便宜上、UIコンポーネントがPySide/PyQtで安全で怠惰なメソッド呼び出し
my_driver.invoke_method.emit('method_name', [arg, ...], {kwarg, ...})
明らかにこれは、直接、他のスレッドでの信号の属性にアクセスする....が、私は」を使用することができるように、私は一般的なinvoke_method
信号を追加したものをハードウェアドライバのすべてにこれがGIL界で必ずしも大丈夫なのかどうかはわかりません。
ドライバの別の信号に接続されたUIに操作固有の信号を持たなくても、任意のスレッドで任意のメソッドを呼び出すことができます。
Iは、ハードウェアの異なる部分にアクセスUIコードの各ビットの信号を使用して代わりに想像 - do_invocation_driver_1
とdo_invocation_driver_2
ようなものを、対応するドライバのinvoke_method
信号にそれらを接続します。