Pythonで実行時にオブジェクトのサイズを尋ねる同様の質問がたくさん見つかりました。一部の回答では、サブプロセスのメモリ量に制限を設定することを提案しています。サブプロセスのメモリに制限を設定したくありません。これが私が欲しいものです -
subprocess.Popen()
外部プログラムの実行に使用しています。プロセスが完了した後でprocess.stdout.readlines()
も、標準出力とエラーを取得できます。process.stderr.readlines()
間違ったプログラムが無限ループに入り、出力を生成し続けると、問題が発生します。出力データをメモリに保存するためsubprocess.Popen()
、この無限ループはすぐにメモリ全体を使い果たし、プログラムの速度が低下します。
1 つの解決策は、タイムアウトを指定してコマンドを実行できることです。しかし、プログラムが完了するまでにかかる時間はさまざまです。時間がかかり、無限ループを持つプログラムの場合、大きなタイムアウトは、それを持つ目的を無効にします。
コマンドが生成できるデータ量の上限を 200MB に設定できる簡単な方法はありますか? 制限を超えた場合、コマンドは強制終了されます。