ホームページ  >  記事  >  バックエンド開発  >  マルチプロセッシングと並列マップを使用して Python 関数を並列化する方法

マルチプロセッシングと並列マップを使用して Python 関数を並列化する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-10-22 20:35:09695ブラウズ

How to Parallelize Python Functions Using Multiprocessing and Parallel Maps?

Python での並列プログラミング

Python では、並列プログラミングによりプログラムの特定のセクションを同時に実行できるため、パフォーマンスが向上する可能性があります。 Python で並列処理を実現するには、マルチプロセッシング モジュールが一般的な選択肢です。

例:

2 つの独立した関数solve1 とsolve2 を含むコード構造を考えてみましょう。これらの関数を並列化するには:

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

このコードは、solve1 とsolve2 の非同期実行を処理するプロセスを生成する処理プールを作成します。各プロセスは同時実行に異なる CPU コアを利用します。

代替並列化オプション:

コードのセクションを並列化するためのもう 1 つのオプションは、並列マップを使用することです。このような場合、引数のリストを用意し、単一の関数を各引数に並行して適用します。

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

考慮事項:

一方、スレッドは同時実行に使用される Python の Global Interpreter Lock (GIL) は、Python オブジェクトの並列実行を妨げ、スレッドを Python コードの並列化に無効にします。

以上がマルチプロセッシングと並列マップを使用して Python 関数を並列化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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