2016-05-30 18 views
0

サブプロセスの使用に制限がありますか?私は、それが外部コマンドの1017回目の実行で絶えず失敗することを観察しました。pythonリソース制限

使用方法:エラーと出力を期待 subprocess.Popen (cmd, shell=True, stdout=file_hndl, stderr=file_hndl)

は、あなたはファイルハンドルが不足しているfile_hndl

答えて

1

subprocess.Popenで障害がない 詳細情報は、大混乱がstdoutstderrの代わりにfile_hndlを使用して作成されます。

すべてのリソースは、オペレーティングシステムの各ユーザープロセスに限定されています。

例:On Linux$ ulimitの-a
コアファイルサイズ(ブロック、-c)0
データワンセグサイズ(キロバイト、-d)無制限
スケジューリング優先度(-e)0
ファイルサイズ(ブロック、-f)(-i)30254
最大ロックされたメモリ(キロバイト、-l)64
最大メモリサイズ(キロバイト、-m)無制限
開いているファイル(-n)1024無制限
保留中のシグナル

開くことができるファイルの数は1024であり、これはsubprocess.Popenの実行を制限していたことに注意してください。

resource.setrlimitを使用して、必要に応じてリソース制限を設定します。

例:resource.setrlimit (resource.RLIMIT_NOFILE, (20000,20000))

0

ファイルオブジェクトをファイルにリダイレクトします。それを増やしてチェックすることができます。ここ

https://unix.stackexchange.com/questions/36841/why-is-number-of-open-files-limited-in-linux https://unix.stackexchange.com/questions/84227/limits-on-the-number-of-file-descriptors

+0

はアレックスが、私は:-)それを考え出ししばらく研究した後、のpythonに新しい蜂午前いただきありがとうございます。 –

+0

アレックスは、私の使い方が間違っている** Popen **です。私は1000の外部コマンドを実行するとアプリケーションが徐々に遅くなっていくのを観察しています。 –

関連する問題