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

2024-06-18

我正在处理大型矩阵,因此我使用 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] 打开的文件太多" error:

    1016
    1017
    1018
    1019
    Traceback (most recent call last):
      File "./memmap_loop.py", line 11, in <module>
      File "/usr/lib/python2.5/site-packages/numpy/core/memmap.py", line 226, in __new__
    EnvironmentError: [Errno 24] Too many open files
    Error in sys.excepthook:
    Traceback (most recent call last):
      File "/usr/lib/python2.5/site-packages/apport_python_hook.py", line 38, in apport_excepthook
    ImportError: No module named packaging_impl

    Original exception was:
    Traceback (most recent call last):
      File "./memmap_loop.py", line 11, in <module>
      File "/usr/lib/python2.5/site-packages/numpy/core/memmap.py", line 226, in __new__
    EnvironmentError: [Errno 24] Too many open files

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


由于 memmap 不采用打开的文件描述符,而是采用文件名,我想您泄漏了temp_fd文件描述符。做os.close(temp_fd) help?


太棒了,它有效。

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

fobj = os.fdopen(temp_fd, "w+")
numpy.memmap(fobj, ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NumPy 和 memmap:[Errno 24] 打开文件太多 的相关文章

随机推荐

  • ExecutorService 应该是静态的和全局的

    我想在我的应用程序中使用相同的线程池 为此 我可以使ExecutorService静态和全局 以便我可以调用ThreadUtil executorService to get ExecutorService当我需要它的时候 public c
  • 在 docker 构建期间设置 DNS 选项

    由于本地网络配置 我必须将 dns 和 dns search 选项添加到我的 docker run 命令中 如下所示 docker run dns XX XX 1 1 dns search companydomain t mycontain
  • 需要野科切吗?没有要加载的文件

    我正在尝试开始使用 Nokogiri 我运行了命令 gem install nokogiri 作为 Windows 7 64 位 中的管理员 控制台显示 已成功安装 和 已安装 1 个 gem 当我输入时 gem list local OR
  • Plesk 11 强制重定向到非 www

    我已经订购了装有 Plesk 11 的新专用服务器 将我的网站从旧服务器移至新服务器 但在打开网站时遇到一些问题 使用 htaccess 我强制客户端使用带有 www 的网站 Plesk 默认情况下执行相反的操作 www 到非 www 结果
  • 如何绘制每个分割对象的轮廓

    我应用分水岭分割来检测触摸对象 这样做效果很好 现在 我想绘制每个对象的轮廓 这样我就可以获得它们的长度 面积 矩等 但是分割结果中的对象仍然是触摸的 所以 我没能画出每一个的轮廓 如何绘制每个对象的轮廓 include
  • 将通配符包标识符转换为单个 ID

    我在应用程序商店中有一个使用通配符包标识符的应用程序 我想实现应用内购买 这需要非通配符ID 如何将现有应用的通配符 ID 转换为静态 ID 以进行应用内购买和推送通知 应用程序的捆绑标识符在更新之间必须始终保持相同 但 AppID 实际上
  • ScrollViewer 滚动条始终禁用

    我是 xaml 和 wpf 的新手 我正在尝试将一些用户控件从代码隐藏插入到容器中 我已阅读此博客文章MSDN http blogs msdn com b marcelolr archive 2009 06 09 stackpanel do
  • 如何向 PyQt5 GUI 添加线程?

    所以我使用 QT Designer 创建了一个 GUI 它工作得很好 但在更复杂的调用中 它不会更新主窗口并锁定 我想运行我的CustomComplexFunction 在根据不断变化的后端信息更新主窗口中的文本编辑时 我希望它每 2 秒运
  • 为什么我的项目没有显示在 JFrame 中?

    我对 JFrame 相当陌生 我想知道为什么我的项目没有显示在窗口上 我知道我没有 ActionHandler 但我只想让我的文本字段显示在我的窗口上 这是我的代码 import java awt Font import javax swi
  • npm 如何处理循环依赖?

    只是想知道 如果有一个具有循环 循环依赖的包 npm 会处理它吗 如何 我用谷歌搜索但找不到非常有用的结果 我在这里可以想到两种问题 相同版本的循环依赖 A gt B B gt C C gt A npm 是否像这样构建依赖关系 只是我的猜测
  • Dart - 何时在集合上使用 Collection-For-In 与 .Map()

    collection for in 操作和 map 方法都可以返回对先前集合中的元素的一些操作 是否有任何理由更喜欢使用其中一种而不是另一种 var myList 1 2 3 var alteredList1 for int i in my
  • 无效的捆绑包...包含不允许的文件“frameworks”

    我尝试通过应用程序加载器发布我的应用程序 但我不断收到此错误 我试过了这个解决方案 https stackoverflow com questions 25777958 validation error invalid bundle the
  • 让我的函数访问外部变量

    我外面有一个数组 myArr array 我想让我的函数访问其外部的数组 以便它可以向其中添加值 function someFuntion myVal some processing here to determine value of m
  • 将 Maven 工件与其依赖项递归地发布到本地 Ivy 存储库

    我必须将一组依赖项镜像到我公司本地的 Ivy 存储库 我目前需要发布Hibernate Spatial 4 0 M1 在我的 Eclipse 项目中 如果启用远程存储库 我只能解析 Ivy 依赖项
  • 没有由文字“1”产生的 Num String 实例

    main do putStrLn myLast 1 2 3 4 myLast a gt a myLast x x myLast xs myLast xs 当我尝试运行此代码时 我收到此消息 没有由文字 1 产生的 Num String 实例
  • MySQL:计算日期/时间之间的差异 - 仅在周一至周五“工作周”期间

    我需要计算开始日期 时间和结束日期 时间之间的差异 但是 我只想在 5 天的工作周内执行此操作 不包括周六 周日 做这个的最好方式是什么 我的想法是 从日期开始 我必须获取星期几 如果是工作日 那么我将添加到累加器中 如果不是 那么我不会添
  • Three.js 中的自定义纹理着色器

    我只是想创建一个非常简单的片段着色器 将指定的纹理绘制到网格上 我研究了一些实现相同功能的自定义片段着色器 并构建了我自己的着色器并围绕它支持 JS 代码 然而 它就是行不通 这是我尝试运行的代码的工作抽象 顶点着色器
  • PHP Laravel:未找到特征

    我在命名空间和使用方面遇到一些问题 我收到此错误 未找到特征 Billing BillingInterface 这些是我的 Laravel 应用程序中的文件 计费 php namespace Billing BillingInterface
  • C#:在特定时间启动应用程序

    我想在计算机上的特定时间启动应用程序 如何在 C 中执行此操作 只是我正在开发一个应用程序 当应用程序必须运行并执行特定任务时 用户将设置一个计时器 我听说在 Windows 中有一个工具可用于在特定时间启动应用程序 是的 Windows
  • NumPy 和 memmap:[Errno 24] 打开文件太多

    我正在处理大型矩阵 因此我使用 NumPy memmap 但是 我收到错误 因为显然 memmap 使用的文件描述符没有关闭 import numpy import tempfile counter 0 while True temp fd