Я читаю кучу netcdf файлов с использованием интерфейса pupynere (linux).Следующий код приводит к ошибке 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
Интересно, что , если я прокомментирую одну из команд append
(любая из них подойдет!) это работает!Что я делаю неправильно?Я закрываю файл, верно?Это как-то связано со списком питонов.Я использовал другой, неэффективный подход до (всегда копируя каждый элемент), который сработал.
PS: ulimit -n
дает 1024, ошибка программы при номере файла 498.
может быть связано с, но решение не работает для меня: NumPy и memmap: [Errno 24] Слишком много открытых файлов