0

私の主な質問: 複数のプロセスをループ内の 1 つのキューに書き込み、そのキューを使用して GUI を更新できますか?

私はキューと複数のプロセスに関する投稿を見てきましたが、それらを組み合わせて使用​​することが可能であるか、または有益であるかどうかを誰かが知っているかどうか疑問に思っていました. 私の思考プロセスは次のとおりです。現在、すべてのプロセッサは最大 8 コアで作られているため、プログラムの一部に計算コストがかかる部分がある場合、私が作成するほとんどのプログラムはこの能力にアクセスできるはずです。複数の異なるプロセスの進行状況を同時に表示する GUI が必要です。これらの各プロセスで可能な限り多くのプロセッサを使用したいのですが、それらはすべて同時に GUI に書き込む必要があるため、私が読んだところによると、これにはキューが機能するようです。

複数のプロセスがパイプを介してキューと通信し、キューが GUI を更新するようにこれにアプローチする最良の方法はありますか?

現時点では、pyQt シグナルとスロットを使用していますが、CPU コアを 1 つしか使用しないため、これは現代では悪い解決策だと感じています。

4

1 に答える 1

1

ほとんどの GUI システムはイベント ドリブンであり、すべてのイベント処理が 1 つのスレッドから行われることを想定しています。これは、Windows イベント システム、Android イベント、Swing、およびおそらく他の多くのイベントに当てはまります。GUI の場合、すべてのイベント管理関数をスレッドセーフにすることによる実際的な利点は小さく、困難は非常に大きくなります。大規模な同時実行システムのほとんどは、イベント ベースとスレッド ベースのアプローチを同時実行に組み合わせています。たとえば、最新のブラウザーです。あなたの場合、更新イベントを登録し、ワーカー プロセス/スレッドによってイベント ディスパッチ スレッドに投稿する方がはるかに簡単です。このようにして、定期的にのみ通知されるため、GUI は他のウィンドウ イベントに応答し続けます。

于 2013-03-22T17:03:24.113 に答える