single
チャレンジ:パラレル・スクエア・コレクター
メニューを表示するにはスワイプしてください
Pythonのマルチプロセッシングは、各プロセスが独立したPythonインタープリターとメモリ空間を持ち、複数のプロセスを並列で実行することを可能にします。この手法は、複数のCPUコアを活用して計算を高速化したいCPUバウンドなタスクに特に有効です。マルチプロセッシングを利用することで、データ処理、科学計算、シミュレーションなど、計算負荷の高い処理のパフォーマンスを大幅に向上させることができます。
multiprocessing.Manager クラスは、リストや辞書などの共有オブジェクトを作成する方法を提供し、複数のプロセスから安全にアクセス・変更することができます。個別の Process インスタンス間で結果を収集したりデータを調整したりする必要がある場合は、必ず Manager を使ってこれらの共有オブジェクトを作成してください。通常のPythonリストや辞書はプロセス間で共有されないため、あるプロセスで行った変更は他のプロセスからは見えません。Manager リストを使えば、各プロセスがデータを追加・変更でき、そのすべての変更が共有オブジェクトを利用するすべてのプロセスから確認できます。
1234567891011121314151617181920from 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リストに格納してください。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください