ホームページ >バックエンド開発 >Python チュートリアル >効率を向上させるために Python ループを並列化するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。