RHEL5 を搭載したサーバーで実行される Python スクリプトがあります。サーバーには 32GB のメモリと 2.83GHz の 8 個の Intel Xeon CPU が搭載されています。ハードウェア リソースに問題はないと思いますが、1,500 万行のテキスト ファイルをアップロードして処理しようとすると、次のようなエラー メッセージが表示されます。
Traceback (most recent call last):
File "./test.py", line 511, in <module>
startup()
File "./test.py", line 249, in startup
cmdoutput = commands.getoutput(cmd_file)
File "/usr/local/lib/python2.6/commands.py", line 46, in getoutput
return getstatusoutput(cmd)[1]
File "/usr/local/lib/python2.6/commands.py", line 55, in getstatusoutput
pipe = os.popen('{ ' + cmd + '; } 2>&1', 'r')
OSError: [Errno 12] Cannot allocate memory
この問題を調査しましたが、問題と完全に一致する回答は見つかりませんでした。これらの回答は「popen」サブルーチンに焦点を当てていましたが、私はこのルーチンを使用しません。" " を使用してcommands.getoutput()
、ドキュメントのファイルの種類を表示します。
1000 万行のテキストを処理しようとすると、この問題は発生しないことに注意してください。テキストファイルが大きい場合にのみ発生します。この問題について私を助けてくれる人はいますか?答えは、「 」以外のより優れたモジュールである可能性がありますcommand.getoutput()
。ありがとう!