是否可以使用多处理对一个 h5py 文件进行并行读取?

2024-04-16

我正在尝试加快从 h5py 数据集文件中读取块(将它们加载到 RAM 内存中)的过程。现在我尝试通过多处理库来做到这一点。

pool = mp.Pool(NUM_PROCESSES)
gen = pool.imap(loader, indices)

加载器函数是这样的:

def loader(indices):
    with h5py.File("location", 'r') as dataset:
        x = dataset["name"][indices]

这实际上有时是有效的(意味着预期加载时间除以进程数,从而实现并行化)。然而,大多数时候情况并非如此,加载时间只是保持与顺序加载数据时一样长。我能做些什么来解决这个问题吗?我知道 h5py 通过 mpi4py 支持并行读/写,但我只想知道这对于只读是否也是绝对必要的。


h5py 可以并行读取,不需要 MPI 版本。但为什么你期望这里的速度会加快呢?您的工作几乎完全受 I/O 限制,而不是 CPU 限制。并行进程不会有帮助,因为瓶颈是硬盘,而不是 CPU。如果这种情况下的并行化甚至减慢了整个读取操作,我也不会感到惊讶。 其他意见?

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

是否可以使用多处理对一个 h5py 文件进行并行读取? 的相关文章

随机推荐

  • 删除命名管道.NET

    我使用以下代码列出我的命名管道 private IEnumerable
  • C++/SFML 显示故障,通过鼠标单击更改精灵成员

    我正在学习 C SFML 作为练习 我正在制作一个小程序 在窗口中显示 64x64 像素方形棕色精灵的 10x10 网格 该程序允许您使用键盘选择绿色 黄色 蓝色 灰色 棕色方形精灵 并用该选定的精灵替换所述网格上的任何图块 游戏循环如下
  • 无法将必备组件放在与我的应用程序相同的位置

    我使用 VS 2013 我希望 sql server 2012 express localdb 与我创建安装程序时的应用程序位于同一位置 因此 在项目属性 gt 发布 gt 先决条件中 我选择第二个选项 从与我的应用程序相同的位置下载先决条
  • 块局部变量的语法

    我对定义块局部变量的良好风格感到困惑 选择是 选择A method that calls block v w puts v w 选项B method that calls block v w puts v w 当我希望本地块具有默认值时 混
  • 分离 CodeIgniter 配置文件 Git 以便公开发布

    我即将启动一个基于 CodeIgniter 的项目 并计划使用 Git 作为我们的 DVCS 我将与其他一些开发人员合作 中央 原始 服务器是私人托管的 但我也想开源它 稍后将代码发布到Github 我的问题是 有没有办法在 Git 中分离
  • 轻量级加密密钥交换协议

    我有一个嵌入式系统通过 HTTP 将数据发布到 JSON REST 服务 我目前正在使用 HMAC SHA1 进行身份验证 方式与亚马逊AWS http docs amazonwebservices com AWSSimpleQueueSe
  • 为什么 Facebook 不合并它的 CSS/JS 文件?

    我很好奇为什么 Facebook 开发人员选择不将他们的脚本和样式表合并到单个文件中 相反 它们通过 CDN 按需加载 Facebook 显然是一个非常复杂的应用程序 我可以理解这种模块化如何使 Facebook 更易于维护 但是通常的优化
  • Python:将目录及其子目录中的所有文件名写入文本文件

    我的问题如下 我想列出目录及其子目录中的所有文件名 并将输出打印在 txt 文件中 现在这是我到目前为止的代码 import os for path subdirs files in os walk Users user Desktop T
  • 文件正在被分配一个 //# sourceMappingURL 但已经有一个

    我只是注意到 Firefox 控制台为我的项目中的每个 js coffee 文件 甚至是包 输出以下错误 file is being assigned a sourceMappingURL but already has one Chrom
  • 在 R 中将数字时间转换为日期时间 POSIXct 格式

    我有一个数据框 其中包含已读入 R 的日期时间列 时间值显示为数字时间 如下面的数据示例所示 我想将它们转换为日期时间 POSIXct 或 POSIXlt 格式 以便可以查看日期和时间 tdat lt c 974424L 974430L 9
  • LinkedIn 分享 API-v2 返回炒股

    我对 LinkedIn Shares API 的逻辑完全感到困惑 因为我从有关共享的文档中读到的内容LinkedIn API 共享文档 https developer linkedin com docs guide v2 shares sh
  • javascript正则表达式验证范围内的年份

    我有年份的输入字段 我需要一个正则表达式来验证它 我有这样的代码 12 d d d 但我只想允许验证特定范围内的年份 例如 1990 2010 我该怎么做 编辑 范围必须是 1950 2050 尝试这个 1990 2010 199 d 20
  • 如何使用 Selenium 和 C# 将 Cookie 保存为字符串?

    到目前为止 我使用以下代码实现了获取网站的所有 cookie 我想要的 我不需要也不想要特定的 cookie var cookies driver Manage Cookies AllCookies write full path txt
  • 将 Aiohttp 与代理一起使用

    我正在尝试使用异步从 url 列表 由 ids 标识 中获取 HTML 我需要使用代理 我正在尝试将 aiohttp 与代理一起使用 如下所示 import asyncio import aiohttp from bs4 import Be
  • OpenCV 2.4.2 中的错误“OpenCV 错误:错误标志”

    我刚刚开始尝试使用 OpenCV 并根据一本书编写了一个非常简单的小程序 问题是当我尝试编译它时 出现此错误 我会给你我所掌握的所有信息 我使用 Mac OS X 10 7 的 homebrew 安装了 openCV include
  • PHP找不到tmp目录

    我在 tmp 目录中创建文件的函数遇到问题 例如tmpfile and tempnam 他们似乎都无法写入 tmp 并返回 false upload tmp dir在 php ini 中设置 文件上传工作正常 在调试这个错误时我发现sys
  • 在文本矩阵中使用多个 CGAffineTransform

    我正在使用 Quartz 显示文本 这是我的代码 CGContextRef myContext UIGraphicsGetCurrentContext CGContextSelectFont myContext Helvetica 12 k
  • Assertj:如何按对象内容比较2个对象列表?

    给出以下 快速且缺失的 代码 class Pair int x int y List l1 Arrays asList new Match 1 2 new Match 1 3 new Match 2 3 List l2 Arrays asL
  • 如何在 Electron BrowserWindow 中查看 PDF?

    所以我有这个 Electron 应用程序 在一个 html 文件中 我链接了另一个脚本 该脚本为程序提供了一些实用功能 其中之一是 function openPDF filePath let pdfWindow new electron r
  • 是否可以使用多处理对一个 h5py 文件进行并行读取?

    我正在尝试加快从 h5py 数据集文件中读取块 将它们加载到 RAM 内存中 的过程 现在我尝试通过多处理库来做到这一点 pool mp Pool NUM PROCESSES gen pool imap loader indices 加载器