加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – NumPy和memmap:[Errno 24]打开的文件过多

发布时间:2020-12-17 00:51:28 所属栏目:Python 来源:网络整理
导读:我正在使用大矩阵,所以我使用的是NumPy的memmap.但是,我收到一个错误,因为显然memmap使用的文件描述符没有被关闭. import numpyimport tempfilecounter = 0while True: temp_fd,temporary_filename = tempfile.mkstemp(suffix='.memmap') map = numpy.memmap

我正在使用大矩阵,所以我使用的是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
    Traceback (most recent call last):
      File "./memmap_loop.py",line 11,in 

有人知道我在俯瞰什么吗?

最佳答案
由于memmap不采用打开的文件描述符,而是文件名,我想你泄漏了temp_fd文件描述符. os.close(temp_fd)有帮助吗?

很棒,它的工作原理.

由于您可以将numpy.memmap传递给类似文件的对象,因此您可以从已有的文件描述符temp_fd创建一个.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读