4
マルチプロセッシングの共有メモリオブジェクト
私はメモリに大きなnumpy配列があるfuncとします。この巨大な配列を(他のいくつかのパラメーターと共に)入力として受け取る関数があります。func異なるパラメータを使用して、並行して実行できます。例えば: def func(arr, param): # do stuff to arr, param # build array arr pool = Pool(processes = 6) results = [pool.apply_async(func, [arr, param]) for param in all_params] output = [res.get() for res in results] マルチプロセッシングライブラリを使用すると、その巨大な配列が複数のプロセスにコピーされます。 異なるプロセスに同じ配列を共有させる方法はありますか?この配列オブジェクトは読み取り専用であり、変更されることはありません。 arrが配列ではなく任意のpythonオブジェクトである場合、もっと複雑なことは何ですか?それを共有する方法はありますか? [編集済み] 私は答えを読みましたが、私はまだ少し混乱しています。fork()はコピーオンライトであるため、Pythonマルチプロセッシングライブラリで新しいプロセスを生成するときに追加のコストを呼び出さないでください。しかし、次のコードは大きなオーバーヘッドがあることを示唆しています: from multiprocessing import Pool, Manager import numpy as np; import …