pupynereインターフェース(Linux)を使用して大量のnetcdfファイルを読んでいます。次のコードはmmapエラーになります。
import numpy as np
import os, glob
from pupynere import NetCDFFile as nc
alts = []
vals = []
path='coll_mip'
filter='*.nc'
for infile in glob.glob(os.path.join(path, filter)):
curData = nc(infile,'r')
vals.append(curData.variables['O3.MIXING.RATIO'][:])
alts.append(curData.variables['ALTITUDE'][:])
curData.close()
エラー:
$ python2.7 /mnt/grid/src/profile/contra.py
Traceback (most recent call last):
File "/mnt/grid/src/profile/contra.py", line 15, in <module>
File "/usr/lib/python2.7/site-packages/pupynere-1.0.13-py2.7.egg/pupynere.py", line 159, in __init__
File "/usr/lib/python2.7/site-packages/pupynere-1.0.13-py2.7.egg/pupynere.py", line 386, in _read
File "/usr/lib/python2.7/site-packages/pupynere-1.0.13-py2.7.egg/pupynere.py", line 446, in _read_var_array
mmap.error: [Errno 24] Too many open files
興味深いことに、コマンドの1つにコメントをappend
付けると(どちらでもかまいません!)、機能します。私は何が間違っているのですか?ファイルを閉じますよね?これはどういうわけかPythonリストに関連しています。以前は(常に各要素をコピーして)、別の非効率的なアプローチを使用していました。
PS:ulimit -n
1024を生成し、プログラムはファイル番号498で失敗します。
に関連しているかもしれませんが、解決策が機能しません:NumPyとmemmap:[Errno24]開いているファイルが多すぎます