Python マルチプロセッシング キュー

Python Maruchipurosesshingu Kyu



データ構造の最も重要な要素はキューです。 Python のマルチプロセッシングの基礎である「先入れ先出し」のデータ構造キューも同様です。プロセスがデータを収集できるように、プロセス関数にキューが提供されます。キューから削除される最初のデータ項目は、入力される最初の項目です。キューの「put()」メソッドを使用してデータをキューに追加し、その「get()」メソッドを使用してキューからデータを取得します。

例 1: Queue() メソッドを使用して Python でマルチプロセッシング キューを作成する

この例では、「queue()」メソッドを使用して Python でマルチプロセッシング キューを作成します。マルチプロセッシングとは、システム内の 1 つ以上の CPU を使用して、2 つ以上のプロセスを同時に実行することです。 Python で構築されたモジュールであるマルチプロセッシングは、プロセス間の切り替えを容易にします。マルチプロセッシングを使用する前に、プロセス プロパティに精通している必要があります。キューがデータ モデルの重要なコンポーネントであることは認識しています。 「先入れ先出し」の考え方に基づいて構築された標準のデータ キューと、Python のマルチプロセッシングは、まったく同じものです。一般に、キューには Python オブジェクトが保存され、タスク間のデータ転送に不可欠です。







「spyder」ツールは、存在する Python スクリプト を実装するために使用されるので、簡単に始めましょう。 Python multiprocessing スクリプトを実行しているため、最初に multiprocessing モジュールをインポートする必要があります。これは、マルチプロセッシング モジュールを「m」としてインポートすることで実現しました。 「m.queue()」手法を使用して、マルチプロセッシングの「queue()」メソッドを呼び出します。ここでは、「queue」という変数を作成し、そこにマルチプロセッシングの「queue()」メソッドを配置します。キューはアイテムを「先入れ先出し」の順序で格納することがわかっているため、最初に追加したアイテムが最初に削除されます。マルチプロセッシング キューを起動したら、「print()」メソッドを呼び出し、「マルチプロセッシング キューがあります」というステートメントを引数として渡して、画面に表示します。次に、作成したキューをこの変数に格納するため、「print()」メソッドの括弧内に「queue」変数を渡して、キューを出力します。




次の図は、Python マルチプロセッシング キューが作成されたことを示しています。印刷ステートメントが最初に表示されます。このマルチプロセッシング キューが指定されたメモリ アドレスに構築された後、2 つ以上の実行中のプロセス間で個別のデータを転送するために使用できます。







例 2: 「Qsize()」メソッドを利用して Python でマルチプロセッシング キューのサイズを決定する

この場合、マルチプロセッシング キューのサイズを決定します。マルチプロセッシング キューのサイズを計算するには、「qsize()」メソッドを使用します。 「qsize()」関数は、Python マルチプロセッシング キューの実際のサイズを返します。つまり、このメソッドは、キュー内のアイテムの総数を提供します。

コードを実行する前に、Python マルチプロセッシング モジュールを「m」としてインポートすることから始めましょう。次に、「m.queue()」コマンドを使用して、マルチプロセッシング「queue()」関数を呼び出し、結果を「Queue」変数に入れます。次に、「put()」メソッドを使用して、次の行でアイテムをキューに追加します。このメソッドは、データをキューに追加するために使用されます。したがって、「put()」メソッドで「Queue」を呼び出し、括弧内の要素として整数を指定します。追加する数字は、「put()」関数を使用して「1」、「2」、「3」、「4」、「5」、「6」、および「7」です。



さらに、「Queue」を使用してマルチプロセッシング キューのサイズを取得し、マルチプロセッシング キューで「qsize()」を呼び出します。次に、新しく形成された「result」変数に、「qsize()」メソッドの結果を保存します。その後、「print()」メソッドを呼び出し、そのパラメーターとしてステートメント「マルチプロセッシング キューのサイズは」を渡します。次に、サイズがこの変数に保存されるため、「print()」関数で「result」変数を呼び出します。


出力画像には表示されたサイズがあります。 「put()」関数を使用してマルチプロセッシング キューに 7 つの要素を追加し、「qsize()」関数を使用してサイズを決定すると、マルチプロセッシング キューのサイズ「7」が表示されます。入力ステートメント「マルチプロセッシング キューのサイズ」は、サイズの前に表示されます。

例 3: Python マルチプロセッシング キューで「Put()」および「Get()」メソッドを使用する

この例では、Python マルチプロセッシング キューの「put()」および「get()」キュー メソッドが使用されています。この例では、2 つのユーザー定義関数を開発します。この例では、「5」の乱数整数を生成するプロセスを作成する関数を定義します。また、「put()」メソッドを使用してそれらをキューに追加します。 「put()」メソッドは、アイテムをキューに入れるために使用されます。次に、キューから数値を取得してその値を返すために、別の関数を作成し、手順中に呼び出します。このメソッドは、「put()」メソッドを使用して挿入したキューからデータを取得するために使用されるため、「get()」関数を使用してキューから数値を取得します。

それでは、コードの実装を始めましょう。まず、このスクリプトを構成する 4 つのライブラリをインポートします。最初に time モジュールから「sleep」をインポートして、秒単位で測定された時間だけ実行を遅らせます。次に乱数を生成するために使用される random モジュールから「random」をインポートし、次に multiprocessing から「process」をインポートします。これは、このコードがプロセスを作成するためです。 、そして最後に、マルチプロセッシングからの「キュー」です。最初にクラス インスタンスを構築することで、キューを使用できます。デフォルトでは、これにより無限キューまたは最大サイズのないキューが確立されます。最大サイズ オプションを 0 より大きい数値に設定することで、サイズ制限のある作品を作成することができます。


関数を定義します。次に、この関数はユーザー定義であるため、「function1」という名前を付け、「queue」という用語を引数として渡します。その後、「print()」関数を呼び出し、「builder: Running」、「flush」、オブジェクト「True」ステートメントを渡します。 Python の print 関数には、ユーザーがこの出力をバッファリングするかどうかを選択できる、flush という独自のオプションがあります。次のステップは、タスクを生成することです。これを行うには、「for」を使用して変数「m」を作成し、範囲を「5」に設定します。次に、次の行で「random()」を使用して、作成した変数「value」に結果を格納します。これは、関数が 5 回の反復を終了し、各反復で 0 から 5 までのランダムな整数が作成されることを示しています。

次に、次のステップで「sleep()」関数を呼び出し、「value」引数を渡して、その部分を特定の秒数遅延させます。次に、「put()」メソッドを使用して「キュー」を呼び出し、基本的に値をキューに追加します。次に、「queue.put()」メソッドをもう一度呼び出して「None」値を渡すことにより、これ以上行うべき作業がないことがユーザーに通知されます。次に、「print()」メソッドを実行し、「builder: ready」ステートメントを「flush」とともに渡し、「True」に設定します。


次に、2 番目の関数「function2」を定義し、その引数としてキーワード「queue」を割り当てます。次に、「True」に設定されたレポート状態「User: Running」と「flush」を渡しながら、「print()」関数を呼び出します。 while true 条件を使用して「function2」の操作を開始し、データをキューから取り出して、新しく作成した「item」変数に入れます。次に、「if」条件「item is None」を使用して、条件が true の場合にループを中断します。利用可能なアイテムがない場合、停止し、ユーザーにアイテムを要求します。この場合、値から取得した項目が null の場合、タスクはループを停止して終了します。次に、次のステップで「print()」関数を呼び出し、「User: ready」レポートと「flush=True」パラメーターを提供します。


次に、「If-name = main_」を使用してメインプロセスに入ります。 「queue()」メソッドを呼び出してキューを作成し、それを「queue」変数に格納します。次に、ユーザー関数「function2」を呼び出してプロセスを作成します。このために、「プロセス」クラスと呼びます。その中で、「target=function2」を渡してプロセス内の関数を呼び出し、引数「queue」を渡し、「User_process」変数に格納します。次に、「User_ process」変数を使用して「start()」メソッドを呼び出すことで、プロセスが開始されます。次に、同じ手順を繰り返してプロセス内の「function1」を呼び出し、それを「builder process」変数に入れます。次に、「join()」メソッドを使用してプロセスを呼び出し、実行を待ちます。


表示されたので、出力で両方の関数のステートメントを確認できます。 「get()」メソッドを使用して、「put()」および「get()」を使用して追加したアイテムをそれぞれ表示します。

結論

この記事では、Python マルチプロセッシング キューについて学びました。与えられたイラストを利用しました。最初に、queue() 関数を使用して Python マルチプロセッシング でキューを作成する方法について説明しました。次に、「qsize()」 メソッドを使用して、キューの .また、キューの put() メソッドと get() メソッドも使用しました。 time モジュールの sleep クラスと random モジュールの random クラスは、どちらも最後の例で説明しました。