5

要素のすべての組み合わせを処理して、配列のペアを反復処理するメモリを大量に消費するアプリケーションがあります。現在、このスクリプトは 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 のガベージ コレクションよりも効率的ですか? 利用可能なコアがあまりないので、とにかく複数のプロセスが多かれ少なかれ並行して実行されることを期待しています。

4

1 に答える 1

1

もちろん、単一のプロセスを実行するとRAMの使用量は少なくなりますが、複数のCPU/コアを利用することは困難になります。

どれくらいの時間がかかるかを気にしない場合は、単一のプロセスを実行してください。

妥協案として、一度にすべてのプロセスを起動するのではなく、一度にいくつかのプロセスを実行することもできます。

于 2013-01-10T01:21:22.113 に答える