Python: 同時プログラミング (19)

序文

この記事では、実際の Python 同時プログラミング プロジェクト: win グラフィカル インターフェイス アプリケーションについて説明します(パート 1、全 8 回の記事)一連の記事では、プロジェクトをゼロから構築し、徐々にプロジェクトを改善し、最終的にプロジェクトを作成します。同時実行性の高いシーン アプリケーションに適しています。

この記事は Python 同時プログラミングの 19 回目の記事です 前回の記事のアドレスは以下のとおりです。

Python: 同時プログラミング (18)_ライオン キングのブログ - CSDN ブログ

次回記事のアドレスは以下の通りです。

Python: 同時プログラミング (20)_ライオン キングのブログ - CSDN ブログ

1. 技術の選択

1. Python のどのモジュールがアプリケーションをサポートしますか?

Python には、Windows GUI アプリケーションの設計に使用できる一般的に使用されるモジュールがいくつかあります。これらのモジュールのいくつかを簡単に紹介します。

(1) Tkinter: Tkinter は Python の標準 GUI ライブラリであり、ウィンドウ、ボタン、ラベル、テキスト ボックスなどのさまざまな GUI コンポーネントを作成する機能を提供します。使い方は簡単で、Windows を含む複数のプラットフォームで動作します。

(2) PyQt: PyQt は、豊富な GUI コンポーネントと関数を提供する Python の Qt ライブラリのバインディングです。Qt は、Windows グラフィカル インターフェイス アプリケーションの開発に使用できるクロスプラットフォーム GUI フレームワークです。PyQt は比較的複雑な API を使用しますが、非常に強力で柔軟性があります。

(3) wxPython: wxPython は Python の wxWidgets ライブラリのバインディングであり、クロスプラットフォーム GUI フレームワークでもあります。ウィンドウ、ボタン、メニューなど、Windows グラフィカル インターフェイスを作成するための多くのコンポーネントとツールを提供します。

(4) PySide/PySide2: PySide は、Python の Qt ライブラリのもう 1 つのバインディングであり、Qt の GUI 機能を提供します。これは PyQt に似ていますが、Qt の LGPL ライセンス バージョンを使用します。PySide は、Windows GUI アプリケーションの作成にも使用できます。

これらのモジュールには、参照用の詳細なドキュメントとサンプル コードが含まれています。独自のニーズや好みに応じて適切なモジュールを選択して、GUI アプリケーションを設計および開発できます。同時に、他にも多くの GUI ライブラリとツールから選択できるため、実際の状況に基づいて評価し、決定を下すことができます。

2. Win アプリケーションをサポートするモジュールの利点は何ですか?

Python にどのようなモジュールがあるかを知ったら、どのように選択すればよいでしょうか? それらの長所と短所を見てみましょう。

(1)トキンター:

利点: Tkinter は Python の標準グラフィカル インターフェイス ライブラリであるため、追加の依存関係をインストールする必要はありません。使いやすく、シンプルなインターフェイス アプリケーションの迅速な開発に適しています。
短所: Tkinter のデフォルトの外観と機能は比較的シンプルで、カスタマイズ性が低いです。
(2) PyQt:

利点: PyQt は、Qt フレームワークに基づく Python バインディング ライブラリであり、豊富なインターフェイス コントロールと機能を提供し、優れたカスタマイズ性と拡張性を備えています。これは成熟し、安定しており、広く使用されているグラフィカル インターフェイス ライブラリです。
短所: PyQt は、特に初心者にとって、学習曲線が急峻です。また、PyQt の商用ライセンスは有料ですが、オープンソース版も入手できます。
(3) wxPython:

利点: wxPython は、wxWidgets に基づく Python バインディング ライブラリであり、クロスプラットフォームのグラフィカル インターフェイス開発ソリューションを提供します。優れた移植性、カスタマイズ性、豊富な制御ライブラリを備えており、複雑なデスクトップ アプリケーションの構築に適しています。
短所: wxPython には比較的ドキュメントが少ないため、特定の機能やカスタマイズ要件については、より多くの研究と実践が必要になる場合があります。
(4) PySide/PySide2:

利点: PySide (PySide2) も、PyQt と同様、Qt フレームワーク用の Python バインディング ライブラリです。強力なカスタマイズ性や豊富なコントロール ライブラリなど、PyQt と同様の機能を提供します。PyQt とは異なり、PySide は LGPL オープン ソース ライセンスを使用しているため、場合によっては商用アプリケーションに適している可能性があります。
短所: 歴史的な理由により、PySide と PySide2 の間にはいくつかの違いと互換性の問題があります。同時に、PySide にはドキュメントやコミュニティ サポートが比較的少ないです。

これらのモジュールは豊富な機能とコントロールを提供しており、プロジェクトの要件や個人の好みに応じて、適切なモジュールを選択してグラフィカル インターフェイス アプリケーションを設計および開発できます。弊社は社内顧客向けでインターフェース要件がシンプルなのでTkinterでニーズに合致しており、今後はこれをベースに共有していきます。

3. マルチプロセス、マルチスレッド、またはマルチコルーチン?

Tkinter ベースの同時プログラミングはマルチスレッドを使用できます。

Tkinter ライブラリ自体はシングルスレッドです。つまり、メイン スレッドでインターフェイスの更新とイベント応答を処理します。時間のかかる操作がメイン スレッドで実行されると、インターフェイスがフリーズしたり応答しなくなったりして、ユーザー エクスペリエンスに影響を与えます。したがって、インターフェイスの滑らかさと応答性を維持するために、時間のかかる操作をバックグラウンド スレッドで実行し、メイン スレッドがインターフェイスの更新とイベント処理に集中できるようにします。

マルチスレッドを使用すると、メイン スレッドでのインターフェイスの応答性を維持しながら、時間のかかる操作をバックグラウンド スレッドで同時に実行できます。データ交換と同期は、スレッド間通信メカニズム (キューなど) を通じてスレッド間で実行できます。たとえば、時間のかかるデータ処理タスクはバックグラウンド スレッドで実行できますが、メイン スレッドはインターフェイスの更新とユーザー インタラクションの処理を担当します。

マルチスレッド プログラミングでは、競合状態やデータ アクセスの競合を避けるために、スレッド セーフとリソース共有の問題を適切に処理する必要があることに注意してください。ロックやセマフォなどのスレッド同期メカニズムを使用して、スレッドの安全性を確保できます。

対照的に、Tkinter アプリケーションではマルチプロセスとマルチコルーチンの使用シナリオは比較的少数です。マルチプロセスは CPU を集中的に使用するタスクを含む並列コンピューティングに適しており、マルチコルーチンは I/O を集中的に使用するタスクの同時処理に適しています。ただし、Tkinter ライブラリ自体の制限により、マルチプロセスとマルチコルーチンを使用すると、インターフェイスの対話と更新に関連する問題が発生する可能性があるため、通常はマルチスレッドを使用して同時タスクを処理することをお勧めします。

2、機能を実現する

私たちのアプリケーションは、TCPserver、TCPclient などのプロトコルをテストするためのツールになります。インターフェイスも非常にシンプルです。つまり、コンピューターをクライアントまたはサーバーとして使用でき、プロトコル テストのために複数のタブ ページを開くことができます。複数のウィンドウをサポートする必要があります。

1. インターフェースレイアウト表示

 2. 性能要件

マルチウィンドウがサポートされており、ウィンドウの数に制限はありませんが、それでも、ホスト コンピュータのクラッシュはシステム リソースの不足によるものであり、アプリケーション自体に依存するものではありません。

おすすめ

転載: blog.csdn.net/weixin_43431593/article/details/131351741