Python NumPy和memmap:[Errno 24]打开的文件太多

Python NumPy和memmap:[Errno 24]打开的文件太多,python,memory-management,numpy,Python,Memory Management,Numpy,我使用大型矩阵,所以我使用NumPy的memmap。但是,我得到了一个错误,因为memmap使用的文件描述符显然没有关闭 import numpy import tempfile counter = 0 while True: temp_fd, temporary_filename = tempfile.mkstemp(suffix='.memmap') map = numpy.memmap(temporary_filename, dtype=float, mode="w+",

我使用大型矩阵,所以我使用NumPy的memmap。但是,我得到了一个错误,因为memmap使用的文件描述符显然没有关闭

import numpy
import tempfile

counter = 0
while True:
    temp_fd, temporary_filename = tempfile.mkstemp(suffix='.memmap')
    map = numpy.memmap(temporary_filename, dtype=float, mode="w+", shape=1000)
    counter += 1
    print counter
    map.close()
    os.remove(temporary_filename)
据我所知,当调用close()方法时,memmap文件是关闭的。但是,上面的代码不能永远循环,因为它最终会抛出“[Errno 24]太多打开的文件”错误:

1016
1017
1018
1019
回溯(最近一次呼叫最后一次):
文件“/memmap_loop.py”,第11行,在
文件“/usr/lib/python2.5/site packages/numpy/core/memmap.py”,第226行,新__
环境错误:[Errno 24]打开的文件太多
sys.excepthook中出错:
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.5/site packages/apport\u python\u hook.py”,第38行,apport\u excepthook
ImportError:没有名为packaging\u impl的模块
最初的例外是:
回溯(最近一次呼叫最后一次):
文件“/memmap_loop.py”,第11行,在
文件“/usr/lib/python2.5/site packages/numpy/core/memmap.py”,第226行,新__
环境错误:[Errno 24]打开的文件太多

有人知道我忽略了什么吗?

由于memmap不采用打开的文件描述符,而是采用文件名,我想您泄漏了
temp\u fd
文件描述符。操作系统是否关闭(临时fd)帮助


很好,它能工作

由于可以向numpy.memmap传递类似文件的对象,因此可以从已有的文件描述符创建一个对象,
temp\u fd

fobj = os.fdopen(temp_fd, "w+")
numpy.memmap(fobj, ...
fobj = os.fdopen(temp_fd, "w+")
numpy.memmap(fobj, ...