允许 foreach 工作人员注册并将子任务分配给其他工作人员

2024-01-07

我有一个 R 代码,其中涉及多个 foreach 工作人员来并行执行一些任务。我正在使用 foreach 和 doMC 来实现此目的。我想让每个 foreach 工作人员招募一些新工作人员,并将其代码的某些部分(可并行)分发给他们。

当前的代码如下所示:

require(doMC)
require(foreach)
registerDoMC(cores = 8)

foreach (i = (1:8)) %dopar% {
<<some code here>>
    for (j in c(1:4))  {
    <<some other code here>>
    }
}

我正在寻找一个理想的代码,如下所示:

require(doMC)
require(foreach)
registerDoMC(cores = 8)

foreach (i = (1:8)) %dopar% {
<<some code here>>
    foreach (j = (1:4)) %dopar% {
    <<some other code here>>
    }
}

我看到了使用 doSNOW 和 doMC 的多范式并行性的示例在这里(https://www.rmetrics.org/files/Meielisalp2009/Presentations/Lewis.pdf#page=17) https://www.rmetrics.org/files/Meielisalp2009/Presentations/Lewis.pdf#page=17。但是,我不知道它是否符合我的要求。

还有,看来嵌套foreach http://cran.r-project.org/web/packages/foreach/vignettes/nested.pdf不适用,因为它需要合并两个循环(看这里) https://stackoverflow.com/a/9675136/2026975,而就我而言,这不是首选;第二个循环仅对第一个循环的部分代码有帮助。如果我错了,请纠正我。

Thanks.


在 foreach 循环内部使用 foreach 循环并没有什么特别的问题。以下是 doSNOW 循环内的 doMC 循环的示例:

library(doSNOW)
hosts <- c('host-1', 'host-2')
cl <- makeSOCKcluster(hosts)
registerDoSNOW(cl)
r <- foreach(i=1:4, .packages='doMC') %dopar% {
  registerDoMC(2)
  foreach(j=1:8, .combine='c') %dopar% {
    i * j
  }
}
stopCluster(cl)

对我来说,将 doMC 用于内部循环似乎很自然,但您可以按照自己的意愿进行操作。您还可以对两个循环使用 doSNOW,但随后您需要在外部 foreach 循环内创建并停止雪簇。

下面是在 doMC 循环中使用 doMC 的示例:

library(doMC)
registerDoMC(2)
r <- foreach(i=1:2, .packages='doMC') %dopar% {
  ppid <- Sys.getpid()
  registerDoMC(2)
  foreach(j=1:2) %dopar% {
    c(ppid, Sys.getpid())
  }
}

结果表明,尽管只有四个执行内部循环的主体,但 doMC 包总共派生了六个进程:

> r
[[1]]
[[1]][[1]]
[1] 14946 14949

[[1]][[2]]
[1] 14946 14951


[[2]]
[[2]][[1]]
[1] 14947 14948

[[2]][[2]]
[1] 14947 14950

当然,您需要注意不要在单个节点上启动太多进程。我发现这种嵌套有点尴尬,这导致了嵌套运算符的开发。

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

允许 foreach 工作人员注册并将子任务分配给其他工作人员 的相关文章

  • 通过非 sf 列内连接两个 sf 对象

    我尝试使用内连接或左连接连接两个 sf 数据帧 这些数据框内部都有几何列 我不断收到错误 check join x y 中的错误 y 应该是一个数据框 对于空间连接 请使用 st joinFALSE 下面的可重现示例 df1 lt data
  • 错误:“tidyverse”的包或命名空间加载失败:“namespace:dplyr”未导出对象“relocate”

    我使用以下命令安装了 tidyverse install packages tidyverse 但是安装后 当我使用以下命令调用库时 library tidyverse 我收到此错误 Error package or namespace l
  • 尝试通过列表递归时,在 R 中出现错误“递归索引在级别 2 失败”

    当我尝试递归遍历图形顶点列表 将它们的值与列表中的一组颜色进行匹配时 出现错误 递归索引在级别 2 失败 我的颜色列表如下 colrs lt list l blue c red n gray50 然后我有一个 igraph 中的顶点列表vs
  • R:使用 RGDAL 和 RASTER 包时抛出错误

    给所有可能相关的人 这是源代码 GRA D1 lt raster files 1 Sets up an empty output raster GRA D1 lt writeStart GRA D1 filename GRA D1 tif
  • 运行 R.exe 会创建临时文件吗?

    我在想 是否启动 R exewindows创建临时文件并 是否解释类似x lt 5写入那些临时文件 如果创建了临时文件 它们存储在哪里 如果我启动多个 R exe 实例会发生什么情况 他们会共享并覆盖彼此的临时文件吗 R 的每个实例都有自己
  • 在闪亮的应用程序和多个页面中进行身份验证

    在我正在开发的系统中 我有 3 个不同的参与者 用户 管理员 支持团队 使用 Shiny App 我想知道如何向这三个参与者进行身份验证 每个参与者只能访问他们的页面 我发现使用闪亮的服务器专业版可以实现这一点 但它不是免费的 有什么方法可
  • 将值添加到 rCharts hPlot 工具提示

    我想通过 rCharts 向标准 Highcharts 工具提示添加一些额外的值 示例代码 require rCharts df lt data frame x c 1 5 y c 5 1 z c A B C D E name c K L
  • 如何在 conda 中静音或抑制 gfortran (或 clang?)后端?

    我一直致力于构建一个非常特殊的 conda 环境 专为python and R与串扰使用rpy2 我想出的方法可以安装正确的R包如下 install main environment sh now date T echo Start Tim
  • 当按多列分组时,如何命名 dplyr 中的 group_split 列表

    我在 dplyr 中使用 group split 在分割了多个列后 我很难命名列表 当我们按一列分组时 我知道该怎么做here https stackoverflow com questions 57107721 how to name t
  • 在 Bookdown 中呈现附录图号

    Bookdown 是一个很棒的软件包 我期待看到它如何发展 但现在我在渲染数字方面遇到了麻烦pdf document2附录中的数字时的格式 具体来说 当带有标题的图形位于附录中时 图形编号应采用 A 1 A 2 B 1 B 2 等形式 但图
  • 使用 ggplot_build 和 ggplot_gtable 后使用 ggsave 保存图形

    我正在通过更改 ggplot build 生成的数据来修改使用 ggplot 构建的图表 原因类似于包括 geom boxplot 中填充美学中使用的缺失因子水平的空间 https stackoverflow com questions 1
  • Java 中的并行编程

    我们如何在Java中进行并行编程 有什么特殊的框架吗 我们怎样才能让这些东西发挥作用 我会告诉你们我需要什么 认为我开发了一个网络爬虫 它从互联网上爬取了大量数据 一个爬行系统无法使事情正常工作 因此我需要更多的系统并行工作 如果是这种情况
  • 在 R 中使用 gamlss::lms 选择百分位数曲线

    我正在使用 gamlss 包中的示例代码来绘制百分位数曲线 library gamlss data abdom lms y x data abdom n cyc 30 它正在绘制自己的一组百分位数曲线 如何选择只绘制第 10 50 和 90
  • R中不同级别的李克特分组

    我想使用 Likert 包 并按变量分组并绘制结果 问题是我想要可视化的变量有不同的级别 有没有解决的办法 一个简单的例子来说明我的问题 library reshape library likert foo lt data frame ca
  • 网页抓取(R 语言?)

    我想获取中间栏中的公司名称this http www consumercomplaints in bysubcategory mobile service providers page 1 html页面 以蓝色粗体书写 以及登记投诉者的位置
  • 在R中绘制3x3方形网格

    我得到了一个数字列表 n 9 想将它们画在一个 3 3 的正方形网格中 每个网格填充相应的数字 我如何在 R 中执行此操作而不安装额外的软件包 例如情节 非常感谢 这里有一个ggplot解决方案比我预期的要难一点 Setup the dat
  • left_join 表示列不存在,即使它存在

    我想用两个不同的变量 tp join 连接两个数据框 出现错误 表示无法在第二个数据帧中找到变量 但是当我运行函数 colnames 时 会显示列名称 为什么会这样呢 df new lt left join master settlemen
  • R:邻接表到邻接矩阵

    Bonjour 我想将邻接列表 3 列 转换为邻接矩阵 在这个论坛中 我找到了多个有关如何将边列表转换为邻接矩阵的示例 我成功地为两列列表做到了这一点 我已经尝试了在网上可以找到的所有解决方案 但似乎我错过了一小步 我尝试过的 我的变量是用
  • 将函数应用于每个列组合

    我有一个数据框n列并希望对每个列应用一个函数组合列 这与如何cor 函数将数据帧作为输入并生成相关矩阵作为输出 例如 X lt data frame A rnorm 100 B rnorm 100 C rnorm 100 cor X 这将生
  • 在多面图中用 N 注释 x 轴

    我正在尝试生成一些按治疗条件和访问次数细分的数字结果的箱线图 每个框中的观察次数都放在图下方 并且也标记了访问次数 这里有一些虚假数据可以用来说明 我举了两个我尝试过但不太有效的例子 library ggplot2 library plyr

随机推荐

  • UITableView 重复 Firebase 数据

    我从 Firebase 收到重复的内容 但我似乎无法弄清楚我做错了什么 在 firebase 我有 6 个帖子 表格视图填充了 6 个单元格 但所有 6 个单元格都具有相同的数据 而其他 5 个帖子不存在 UITableViewCell t
  • 将键值列表转换为数据框

    我在 R 中有一个名为 国家 的键 值列表 print country CAM 1 5 TJK 1 1 SEN 1 7 键是一个国家的名称和该国家出现的值 我想将此列表转换为数据框 如下所示 country occurence 0 CAM
  • 为 Django Oscar 存储信用/虚拟货币应用程序?

    我希望为存储虚拟货币的客户建立一个商店信用模型 此商店信用应用程序将存储可用于支付产品费用的积分 在退货或某些方案中添加 是django oscar 账户 https github com django oscar django oscar
  • Delphi7 WCF方法输入参数

    我有 wcf web 服务 basicHttpBinding 我们的Delphi7客户端无法正确使用它 我已经使用 WCF 附加功能简化了 WSDL 好的 Delphi7 wsdl 导入器生成代理正确 现在我遇到了输入参数的问题 它们总是有
  • HTTP 404 与 Ajax.ActionLink

    我无法解决 404 错误 Global asax cs 中的默认路由 routes MapRoute Default controller action id new controller Home action Index id UrlP
  • SQL 或 LINQ:如何选择仅一个参数发生变化的记录?

    假设我们有这个列表 Id IdRef myColumn anotherColumn 448 70 1 228 449 70 1 2s8 451 70 1 228 455 70 2 2a8 456 70 2 s28 457 70 2 28 4
  • 匹配嵌套大括号的正则表达式

    我需要正则表达式来匹配正确的大括号 例如每个开一闭一abc abc bc xyz 我需要它 从中获取一切 abc bc xyz 没有得到 abc bc 我尝试使用 这对于正则表达式来说是不可能的 为此需要上下文无关语法 并且正则表达式仅适用
  • 检测图像是否像素化的最佳方法是什么?

    我试图判断图像是否像素化 我试图使用拉普拉斯方差方法来执行此操作 但我不确定它是否正常工作 因为使用我的代码返回的图像非常扭曲 像素化 方差非常高 为 1011 import sys import cv2 import imutils as
  • 比较列表中除您自己之外的项目

    我想比较列表中的项目 但不希望将其与其自身进行比较 我怎么做 我的代码 var students new List
  • 缺少对 verify(mock) 的方法调用,但有一个吗?

    介绍 我正在尝试进行一个测试来验证 使用 Mockito v1 9 5 的verify 一个带有签名的方法deinit 在界面中Bar在执行传递后调用Foo deinit 我遇到了一个我真的不明白的错误 这是FooTest java我正在尝
  • 在分支中应用补丁

    我收到了来自贡献者的补丁 显然 他在后备箱中制作了补丁 但是 我想将他的更改提交到一个新分支 我可以知道如何通过 Tortoise Hg 做到这一点吗 下面的说明假设您希望将补丁隔离在named branch 使用命令行 可以轻松地将补丁应
  • JAX-RS访问控制

    有人可以为我提供一些有关 JAX R Web 服务中的访问控制的指示吗 例如根据用户凭据 名称或任何其他标准限制访问 在sun手册中找不到任何有用的信息 提前致谢 阿迪尔 我个人使用 Spring security 来完成此任务 Sprin
  • 覆盖 Python cmd 模块中未记录的帮助区域

    我正在使用 Python 的 cmd 模块构建一个小型 CLI 工具 我不喜欢显示列出的未记录的命令 因此 当我输入 帮助 时 我只想显示记录的命令 当前输入帮助显示 Documented commands type help
  • 使用 LINQ 过滤集合

    假设我们有一个 Person 对象的集合 class Person public string PersonName get set public string PersonAddress get set 以及代码定义集合中的某处 List
  • 从命令行使用 git 属性

    我的仓库中有这样的配置 echo java diff java gt gt gitattributes 当我这样做时git diff 我得到了预期的结果 不过 我正在编写一个脚本来分析其他 git 存储库 所以我通常会这样做 git git
  • Vaadin 会话管理 - 它是如何工作的?

    在工作中 我们使用 Vaadin 开发一个 Web 应用程序 我是一位相当高级的 Java 程序员 我对 Vaadin 也有经验 但现在我已经到了需要将信息存储在用户会话中的地步 区域设置 用户名等属性 In the Vaadin 文档 h
  • Django Auth LDAP - 使用 sAMAccountName 直接绑定

    有两种方法可以使用 Django Auth LDAP 对用户进行身份验证 搜索 绑定和 直接绑定 第一个涉及匿名或使用固定帐户连接到 LDAP 服务器并搜索身份验证用户的可分辨名称 然后我们可以尝试再次使用用户的密码进行绑定 第二种方法是从
  • 自动判断用户定义函数是否与隐式函数等价

    有时 用户实现的函数具有与其隐式定义版本相同的功能 例如 复制构造函数只调用其所有成员的复制构造函数 struct A int B A const A a B a B 这是不希望的 因为它会导致额外的维护 例如 如果类成员被重命名 重新排序
  • $.clone 和 .cloneNode

    我对 jQuery 之间的区别有点困惑 clone和原始的 cloneNode财产 如果我在做 blah cloneNode true 这将在 jQuery 空间之外创建一个全局对象 If I use blah clone true 这将在
  • 允许 foreach 工作人员注册并将子任务分配给其他工作人员

    我有一个 R 代码 其中涉及多个 foreach 工作人员来并行执行一些任务 我正在使用 foreach 和 doMC 来实现此目的 我想让每个 foreach 工作人员招募一些新工作人员 并将其代码的某些部分 可并行 分发给他们 当前的代