ホームページ  >  記事  >  バックエンド開発  >  Python プログラムで並列処理を実現する方法

Python プログラムで並列処理を実現する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-22 19:55:34299ブラウズ

How to Achieve Parallelism in Python Programs

Python での並列プログラミング: 並列処理の課題に対する解決策

並列プログラミングは、複数のタスクを同時に実行することでパフォーマンスを向上させることを目的としています。 Python では、C で一般的に使用される OpenMP はすぐには適用できません。この記事では、Python プログラムでの並列処理の実装の問題について取り上げ、独立した関数を同時に実行するという課題に取り組みます。

指定されたコード構造:

solve1(A)
solve2(B)

では、コード内の独立した関数を識別する必要があります。この例では、solve1 とsolve2 は 2 つの別個の関数です。

このコードを並列化するには、プロセスベースの並列処理を可能にする Python のマルチプロセッシング モジュールの使用を検討してください。特定のシナリオでは、処理プールを利用できます。

<code class="python">from multiprocessing import Pool
pool = Pool()
result1 = pool.apply_async(solve1, [A])    # evaluate "solve1(A)" asynchronously
result2 = pool.apply_async(solve2, [B])    # evaluate "solve2(B)" asynchronously
answer1 = result1.get(timeout=10)
answer2 = result2.get(timeout=10)</code>

このアプローチでは、CPU コアごとに 1 つずつ複数のプロセスを利用して、独立した機能を同時に実行します。この分業により、プログラムの実行時間が短縮される可能性があります。

リストを 1 つの関数にマッピングするための別のオプションは次のとおりです。

<code class="python">args = [A, B]
results = pool.map(solve1, args)</code>

スレッドを次のようにマッピングすべきではないことに注意することが重要です。 GIL (グローバル インタープリター ロック) により、複数のスレッドが Python コードを同時に実行できなくなり、並列実行が無効になるため、Python の並列処理に使用されます。

以上がPython プログラムで並列処理を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。