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

Python Maruchipurosesshingu For Rupu



マルチプロセッシング はマルチスレッドに匹敵します。ただし、スレッド化に使用される GIL により、一度に 1 つのスレッドしか実行できないという点で異なります。マルチプロセッシング は、複数の CPU コア間で連続して操作を実行するプロセスです。スレッドを並行して操作することはできません。ただし、マルチプロセッシングにより、プロセスを確立し、さまざまな CPU コアで同時に実行できます。 for ループなどのループは、最もよく使用されるスクリプト言語の 1 つです。所定の反復回数などの基準に達するまで、さまざまなデータを使用して同じ作業を繰り返します。ループは、各反復を 1 つずつ実行します。

例 1: Python マルチプロセッシング モジュールでの For ループの利用

この例では、for ループと Python マルチプロセッシング モジュール クラス プロセスを使用します。 Python のマルチプロセッシング for ループがどのように機能するかをすぐに理解できるように、非常に簡単な例から始めます。マルチプロセッシングは、スレッド化モジュールに匹敵するインターフェースを使用して、プロセスの作成をパックします。







マルチプロセッシング パッケージは、スレッドではなくサブプロセスを採用することで、ローカルとリモートの両方の同時実行性を提供し、グローバル インタープリター ロックを回避します。文字列オブジェクトまたはタプルである for ループを使用して、シーケンスを継続的に反復します。これは、他のプログラミング言語で見られるキーワードとは異なり、他のプログラミング言語で見られる反復子メソッドのように機能します。新しいマルチプロセッシングを開始することで、プロシージャを同時に実行する for ループを実行できます。



「スパイダー」ツールを利用して、コード実行用のコードを実装することから始めましょう。また、Python を実行するには「spyder」が最適であると考えています。コードが実行しているマルチプロセッシング モジュール プロセスをインポートします。 「プロセス クラス」と呼ばれる Python のマルチプロセッシング コンセプトは、新しい Python プロセスを作成し、コードを実行するメソッドを提供し、親アプリケーションに実行を管理する方法を提供します。 Process クラスには start() および join() プロシージャが含まれており、どちらも重要です。



次に、「func」というユーザー定義関数を定義します。これはユーザー定義関数であるため、任意の名前を付けます。この関数の本体内で、「subject」変数を引数として渡し、「maths」値を渡します。次に、「print()」関数を呼び出し、ステートメント「The name of the common subject is」と値を含む「subject」引数を渡します。次に、次のステップで、「if name== _main_」を使用します。これにより、ファイルがモジュールとしてインポートされたときにコードを実行できなくなり、コンテンツがスクリプトとして実行されたときにのみ実行が許可されます。





最初に開始する条件セクションは、ほとんどの場合、ファイルがスクリプトとして実行される場合にのみ実行されるコンテンツを提供する場所と考えられます。次に、引数 subject を使用して、「science」、「English」、および「computer」という値を格納します。プロセスには、次の手順で「process1[]」という名前が付けられます。次に、「process(target=func)」を使用してプロセス内の関数を呼び出します。 Target は関数の呼び出しに使用され、このプロセスを「P」変数に保存します。

次に、「process1」を使用して「append()」関数を呼び出します。この関数は、関数「func」にあるリストの最後に項目を追加します。プロセスは「P」変数に格納されるため、「P」をこの関数に引数として渡します。最後に、「start()」関数と「P」を使用してプロセスを開始します。その後、「subject」引数を指定してメソッドを再度実行し、件名で「for」を使用します。そして、もう一度「process1」と「add()」メソッドを使って処理を開始します。その後、プロセスが実行され、出力が返されます。その後、プロシージャは「join()」テクニックを使用して終了するように指示されます。 「join()」プロシージャを呼び出さないプロセスは終了しません。重要な点の 1 つは、プロセスを通じて引数を提供する場合は、「args」キーワード パラメータを使用する必要があることです。




これで、最初に「process」関数を使用して呼び出すため、「func」関数に渡す「maths」サブジェクトの値を渡すことによって、ステートメントが最初に表示されることが出力でわかります。次に、「append()」コマンドを使用して、最後に追加されるリストに既にある値を取得します。続いて、「理科」「コンピューター」「英語」が発表されました。しかし、ご覧のとおり、値は正しい順序ではありません。これは、手順が完了するとすぐに報告し、メッセージを報告するためです。

例 2: 順次 for ループからマルチプロセッシング並列 for ループへの変換

この例では、マルチプロセッシング ループ タスクは、並列 for ループ タスクに変換される前に順次実行されます。 for ループを使用して、コレクションや文字列などのシーケンスを発生順に循環できます。

それでは、コードの実装を始めましょう。まず、time モジュールから「sleep」をインポートします。 time モジュールの「sleep()」プロシージャを使用すると、呼び出しスレッドの実行を好きなだけ中断できます。次に、random モジュールの「random」を使用し、「func」という名前の関数を定義し、キーワード「argu」を渡します。次に、「val」を使用してランダムな値を作成し、「random」に設定します。次に、「sleep()」メソッドを使用してしばらくブロックし、パラメーターとして「val」を渡します。次に、メッセージを送信するために、「print()」メソッドを実行し、「ready」という単語とキーワード「arg」をパラメーターとして渡し、「created」と値を「val」を使用して渡します。

最後に、「flush」を利用して「True」に設定します。ユーザーは、Python の print 関数の flush オプションを使用して、出力をバッファリングするかどうかを決定できます。このパラメータのデフォルト値 False は、出力がバッファリングされないことを示します。 true に設定すると、出力は一連の行として表示されます。次に、「if name== main」を使用してエントリ ポイントを保護します。次に、ジョブを順次実行します。ここでは、範囲を「10」に設定します。これは、ループが 10 回の反復後に終了することを意味します。次に、「print()」関数を呼び出し、「ready」入力ステートメントを渡し、「flush=True」オプションを使用します。


コードを実行すると、ループによって関数が「10」回実行されることがわかります。インデックス 0 から始まり、インデックス 9 で終わるまで、10 回反復します。すべてのメッセージには、「arg」として渡す関数番号であるタスク番号と作成番号が含まれています。


このシーケンシャル ループは、現在、マルチプロセッシングの並列 for ループに変換されています。同じコードを使用しますが、マルチプロセッシング用に追加のライブラリと関数を使用します。したがって、先ほど説明したように、マルチプロセッシングからプロセスをインポートする必要があります。次に、「func」という関数を作成し、「val=random」を使用して乱数を取得する前にキーワード「arg」を渡します。

次に、「print()」メソッドを呼び出してメッセージを表示し、「val」パラメータを指定して少し遅延させた後、「if name= main」関数を使用してエントリ ポイントを確保します。そこで、プロセスを作成し、「process」を使用してプロセス内の関数を呼び出し、「target=func」を渡します。次に、「func」、「arg」、値「m」、および範囲「10」を渡します。これは、ループが「10」回の反復後に関数を終了することを意味します。次に、「process」で「start()」メソッドを使用してプロセスを開始します。次に、「join()」メソッドを呼び出して、プロセスの実行を待機し、その後すべてのプロセスを完了します。


したがって、コードを実行すると、関数はメイン プロセスを呼び出して実行を開始します。ただし、すべてのタスクが完了するまで実行されます。これは、各タスクが同時に実行されているためです。終了するとすぐにメッセージを報告します。これは、メッセージが順不同であっても、「10」回の反復がすべて完了した後にループが終了することを意味します。

結論

この記事では、Python のマルチプロセッシング for ループについて説明しました。また、2 つの図も提示しました。最初の図は、Python のループ マルチプロセッシング ライブラリで for ループを利用する方法を示しています。 2 番目の図は、シーケンシャル for ループを並列マルチプロセッシング for ループに変更する方法を示しています。 Python マルチプロセッシング用のスクリプトを作成する前に、マルチプロセッシング モジュールをインポートする必要があります。