ホームページ >バックエンド開発 >Python チュートリアル >効率を向上させるために Python ループを並列化するにはどうすればよいですか?

効率を向上させるために Python ループを並列化するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-05 02:02:09899ブラウズ

How Can I Parallelize Python Loops for Improved Efficiency?

Python ループの並列化による効率の向上

Python では、ループの並列化により、CPU バウンドのタスクのパフォーマンスを大幅に向上させることができます。 calc_stuff 関数を使用して値を計算し、その結果を別のリストに蓄積する提供されたループを並列化するには、2 つの効果的なアプローチがあります。

方法 1: マルチプロセッシング

Due Python の Global Interpreter Lock (GIL) では、複数のスレッドを使用しても、CPU バウンドのタスクには利点が得られません。代わりに、マルチプロセッシングの方が適切なオプションです。

マルチプロセッシング モジュールを使用すると、以下に示すように、複数のワーカー プロセスを含むプロセス プールを作成できます。

pool = multiprocessing.Pool(4)  # Create a pool with 4 worker processes
out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))

マップ関数は各アイテムを送信します。ワーカー プロセスへの範囲反復子で、返された結果を収集し、それらを out1、out2、および out3 に解凍します。 lists.

方法 2: Concurrent.futures Python 3.2

ループを並列化するもう 1 つの便利なオプションは、Concurrent.futures モジュールを使用することです。これは、使用するために最適化されたインターフェイスを提供します。スレッドとプロセス プール:

with concurrent.futures.ProcessPoolExecutor() as pool:
    out1, out2, out3 = zip(*pool.map(calc_stuff, range(0, 10 * offset, offset)))

このアプローチでは、内部でプロセス プールを使用します。マルチプロセッシング方式と同様に動作します。

どちらの方式でも、異なる入力で calc_stuff 関数を並列実行できるため、CPU 負荷の高いループの実行時間が短縮されます。

以上が効率を向上させるために Python ループを並列化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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