私は PySide を使用して一部のハードウェアを管理し、(たとえば) インターフェイスのボタンのクリックに応じて比較的単純な操作を実行しています。これらの各ハードウェアを実行するためのコードは、別のスレッドに存在します。便宜上、invoke_method
UI コンポーネントが使用できるように、これらすべてのハードウェア ドライバーに汎用シグナルを追加しました。
my_driver.invoke_method.emit('method_name', [arg, ...], {kwarg, ...})
明らかに、これは他のスレッドのシグナル属性に直接アクセスします....しかし、これがGILの世界で必ずしも問題ないかどうかはわかりません。
これが本当に怠惰な解決策である場合、UI で操作固有のシグナルをドライバーの別のシグナルに接続することなく、任意のスレッドで任意のメソッドを呼び出すための優れた代替手段はありますか?
do_invocation_driver_1
代わりに、さまざまdo_invocation_driver_2
なハードウェアにアクセスする UI コードの各ビットでシグナルを使用することを想像できますinvoke_method
。