要素のすべての組み合わせを処理して、配列のペアを反復処理するメモリを大量に消費するアプリケーションがあります。現在、このスクリプトは RAM を大量に消費しています。最終的に約 3GB の RAM を使用します。
私の質問はこれです:
要素の各組み合わせを 1 つの大規模なプロセスで処理する方が、メモリ効率が高くなりますか? または、組み合わせごとに新しいサブプロセスを開始する方がよいでしょうか。
言い換えれば、オプション1を実行する方が良いですか:
for i in param_set1:
for j in paramset2:
Do_A_Big_Job(i, j)
またはオプション 2:
import subprocess
for i in param_set1:
for j in paramset2:
subprocess.call([Do_A_Big_Job_Script, i, j])
「より良い」とは、「RAMの使用量を減らす」ことを意味します。
ありがとう!
編集 私は明らかにメモリ使用量に興味があります。プロセスが終了すると、UNIX システムはそのメモリを解放しますか? これは、適切に記述されたスクリプトの python のガベージ コレクションよりも効率的ですか? 利用可能なコアがあまりないので、とにかく複数のプロセスが多かれ少なかれ並行して実行されることを期待しています。