multiprocessing.Pool.map()
各入力値が大きい(たとえば500 MB)状況で、多くの結果を並行して計算するのは効率的ですか?ただし、入力値には一般に同じ大きなオブジェクトが含まれていますか?私はmultiprocessing
、各入力値のピクルスバージョンをプール内の各ワーカープロセスに送信することで機能するのではないかと心配しています。最適化が実行されない場合、これは、の入力値ごとに大量のデータを送信することを意味しmap()
ます。これは本当ですか?私はすぐにmultiprocessing
コードを調べましたが、明らかなものは何も見つかりませんでした。
より一般的には、たとえば10,000個の値を実行するために、どの単純な並列化戦略をお勧めしますかmap()
。各値はタプル(vector, very_large_matrix)
であり、ベクトルは常に異なりますが、5つの異なる非常に大きな行列しかない場合はどうでしょうか。
PS:大きな入力行列は実際には「プログレッシブ」に表示されます。最初に2,000個のベクトルが最初の行列と一緒に送信され、次に2,000個のベクトルが2番目の行列と一緒に送信されます。