Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:パラレル・スクエア・コレクター | Multithreading vs. Multiprocessing
Python構造化プログラミング
セクション 3.  5
single

single

チャレンジ:パラレル・スクエア・コレクター

メニューを表示するにはスワイプしてください

Pythonのマルチプロセッシングは、各プロセスが独立したPythonインタープリターとメモリ空間を持ち、複数のプロセスを並列で実行することを可能にします。この手法は、複数のCPUコアを活用して計算を高速化したいCPUバウンドなタスクに特に有効です。マルチプロセッシングを利用することで、データ処理、科学計算、シミュレーションなど、計算負荷の高い処理のパフォーマンスを大幅に向上させることができます。

Note
ノート

multiprocessing.Manager クラスは、リストや辞書などの共有オブジェクトを作成する方法を提供し、複数のプロセスから安全にアクセス・変更することができます。個別の Process インスタンス間で結果を収集したりデータを調整したりする必要がある場合は、必ず Manager を使ってこれらの共有オブジェクトを作成してください。通常のPythonリストや辞書はプロセス間で共有されないため、あるプロセスで行った変更は他のプロセスからは見えません。Manager リストを使えば、各プロセスがデータを追加・変更でき、そのすべての変更が共有オブジェクトを利用するすべてのプロセスから確認できます。

1234567891011121314151617181920
from multiprocessing import Process, Manager def add_value(value, shared_list): shared_list.append(value) if __name__ == "__main__": manager = Manager() shared_list = manager.list() processes = [] values = [10, 20, 30, 40, 50] for v in values: p = Process(target=add_value, args=(v, shared_list)) processes.append(p) p.start() for p in processes: p.join() print("Collected results:", list(shared_list))

このコードは、multiprocessing.Manager を使用して複数のプロセスがアクセスおよび変更できる共有リストを作成する方法を示しています。各プロセスは数値の二乗を計算し、その結果を共有リストに追加します。Manager リストを使用することで、すべてのプロセスが安全にデータを共有および収集でき、並列で実行される個別のプロセスから結果を集めることが可能になります。

タスク

スワイプしてコーディングを開始

compute_squareという関数を作成し、1つの整数とresultsリストを引数として受け取り、その整数の二乗を計算してresultsリストに追加してください。

次に、multiprocessing.Processクラスを使用して、numbersリスト内の各数値ごとに個別のプロセスを作成し、その二乗を並列で計算します。すべてのプロセスから結果を収集し、results変数に格納してください。

  • compute_square関数は、二乗する整数とresultsリストの2つの引数を取るように実装してください。
  • compute_square内で、整数の二乗を計算し、その結果をresultsリストに追加してください。
  • numbersの各数値に対して、Processをターゲットとし、数値とcompute_squareを引数とするresultsを作成してください。
  • すべてのプロセスを開始し、計算がすべて完了するまでjoinしてください。
  • 計算されたすべての二乗値をresultsリストに格納してください。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  5
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt