参考类的并行计算

2023-11-20

我有一个相当大的对象列表,我想并行应用一个复杂的函数,但我当前的方法使用了太多内存。我认为参考类可能会有所帮助,但是使用mcapply修改它们似乎不起作用。

该函数修改对象本身,因此我用新对象覆盖原始对象。由于该对象是一个列表,而我只修改了其中的一小部分,因此我希望 R 的修改时复制语义能够避免制作多个副本;然而,在运行它时,我正在做的事情似乎并非如此。这是我一直在使用的基本 R 方法的一个小示例。它正确地将余额重置为零。

## make a list of accounts, each with a balance
## and a function to reset the balance
foo <- lapply(1:5, function(x) list(balance=x))
reset1 <- function(x) {x$balance <- 0; x}
foo[[4]]$balance
## 4 ## BEFORE reset
foo <- mclapply(foo, reset1)
foo[[4]]$balance
## 0 ## AFTER reset

似乎使用引用类可能会有所帮助,因为它们是可变的,并且在使用时lapply它确实如我所料;余额重置为零。

Account <- setRefClass("Account", fields=list(balance="numeric"),
                       methods=list(reset=function() {balance <<- 0}))

foo <- lapply(1:5, function(x) Account$new(balance=x))
foo[[4]]$balance
## 4
invisible(lapply(foo, function(x) x$reset()))
foo[[4]]$balance
## 0

但是当我使用mclapply,它无法正确重置。请注意,如果您使用的是 Windows 或mc.cores=1, lapply将会被调用。

foo <- lapply(1:5, function(x) Account$new(balance=x))
foo[[4]]$balance
## 4
invisible(mclapply(foo, function(x) x$reset()))
foo[[4]]$balance
## 4

这是怎么回事?如何并行使用参考类?有没有更好的方法来避免不必要的对象复制?


我认为分叉进程虽然可以访问工作区中的所有变量,但一定不能更改它们。这有效,但我还不知道它是否可以改善内存问题。

foo <- mclapply(foo, function(x) {x$reset(); x})
foo[[4]]$balance
## 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

参考类的并行计算 的相关文章

  • R data.table 1.9.2 关于 setkey 的问题

    这似乎是 1 8 10 后引入的一个错误 与包含列表的 DT 的 setkey 相关 运行下面两个代码来查看问题 library data table dtl lt list dtl 1 lt data table scenario 1 p
  • rvest 和 NHL 统计数据的 CSS 选择器问题

    我想从 hockey reference com 中抓取数据 特别是从以下链接中抓取数据 https www hockey reference com leagues NHL 1991 html https www hockey refer
  • 如何确定 R 包的作者?

    如何确定包的作者是谁 鉴于我们拥有这个广泛使用的代码库 我认为参考我在分析中使用的软件是合适的 有没有办法以编程方式检索作者和任何其他相关信息 在伪代码中 我想执行以下操作 references base 我怎样才能做到这一点 为了能够引用
  • 使用 RDCOMClient 搜索 Outlook 收件箱

    我尝试使用 RDCOMClient 在 Outlook 收件箱中搜索电子邮件中的特定主题 然后获取附件 我在一封电子邮件上进行了这项工作 但由于主题包含日期元素 我需要搜索成为一个类似的子句 但不太清楚这适合我的下面的查询 outlook
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • R 编程常用工具

    如果已经以不同的方式问过这个问题 我深表歉意 但我找不到任何达到我想要的东西 我真的是从其他软件包 SPSS 开始接触 R 的 当我了解真正可以做什么时 我意识到我还需要其他 工具 这让我想到了我的问题 您有哪些用于开发 R 代码的设置 我
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 手动设置scale_fill_distiller()的比例

    我正在尝试制作一系列图表进行比较 举例来说 我想使用iris数据集来制作这样的图 其中我已过滤以仅查看 setosa 物种 library ggplot2 library dplyr iris gt filter Species setos
  • 如何定义“f_n-chi-square”函数并使用“uniroot”求置信区间?

    I want to get a 95 confidence interval for the following question 我已经写了函数f n在我的 R 代码中 我首先使用 Normal 随机采样 100 个样本 然后定义函数h
  • 按特定样本前缀对列名称向量进行子集化

    假设我有一个如下所示的数据框 ca01 lt c 1 10 ca02 lt c 2 11 ca03 lt c 3 12 stuff 1 lt rep test 10 other lt rep 9 10 data lt data frame
  • 从 R 中的方差分析 (glm) 中提取残余偏差

    我在 R 中安装了一个 glm 模型并采用了方差分析表 我需要提取 残余偏差 列 但它会产生错误 以下是代码 创建数据 counts lt c 18 17 15 20 10 20 25 13 12 outcome lt gl 3 1 9 t
  • 不同 R/lme4 版本的单一拟合结果不匹配

    我试图将 R 版本 3 5 3 lme4 1 1 18 1 的随机效应估计与 R 版本 4 1 1 lme4 1 1 27 1 相匹配 然而 当存在奇异拟合时 这两个版本之间的随机效应存在微小差异 我对奇点警告很满意 但令人费解的是不同版本
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple
  • 从 df 中提取具有两列的重叠行对

    我想找出这两个表之间哪些对重叠 gt dput data1 structure list Name x c MDH1 MDH1 IDH2 IDH2 IDH2 IDH2 IDH2 IDH2 IDH2 SCOALB SCOALB CSY4 CS
  • 使用大矩阵操作

    我必须使用 big matrix 对象 并且无法计算某些函数 让我们考虑以下大矩阵 create big matrix object x lt as big matrix matrix sample 1 10 20 replace TRUE
  • dplyr 返回每个组的全局平均值,而不是每个组的平均值

    有人可以解释一下我在这里做错了什么 library dplyr temp lt data frame a c 1 2 3 1 2 3 1 2 3 b c 1 2 3 1 2 3 1 2 3 temp gt group by temp 1 g
  • 获取函数的命名空间

    我正在开发一个包 我希望在其中向对象添加编辑历史记录 该包允许其他包注册用于编辑对象的函数 我正在寻找一种方法来记录注册用于编辑的函数的包的版本 问题是 给定一个函数 如何从导出的位置获取包 我的想法是调查它的搜索路径 但是search 仅
  • 将字符串列拆分为多个虚拟变量

    作为 R 中 data table 包的相对缺乏经验的用户 我一直在尝试将一个文本列处理为大量指示符列 虚拟变量 每列中的 1 表示特定的子字符串是在字符串列中找到 例如我想处理这个 ID String 1 a b 2 b c 3 c 进入
  • 访问或解析 R 中的 summary() 中的元素

    我运行以下 R 命令来进行 Dunnett 测试并获取摘要 如何访问下面线性假设的每一行 这是摘要输出的一部分 基本上我不知道摘要的结构 我尝试使用名称 但它似乎不起作用 因为我没有看到任何命名属性来提供这一点 library multco
  • 如何按用户定义(例如非字母顺序)对数据框进行排序[重复]

    这个问题在这里已经有答案了 给定一个数据框dna gt dna chrom start chr2 39482 chr1 203918 chr1 198282 chrX 7839028 chr17 3874 以下代码重新排序dna by ch

随机推荐

  • FOSUserBundle:删除 emailCanonical 的唯一索引

    我正在尝试删除 emailCanonical 上的唯一索引 以便多个用户可以共享相同的电子邮件地址 但是 我不想直接编辑 FOS UserBundle Resources config doctrine User orm xml 因为对包本
  • 在路径或正文中发布参数

    我正在创建 Rest API 但我对 URL 结构感到困惑 我只需在 Post 请求中向服务器发送一个参数 我应该通过路径变量还是在请求正文中发送它 最佳做法是什么 当前 URL 示例 api v1 users id name name n
  • Android BroadcastReceiver,设备重启后自动运行服务

    您好 我正在编写一个应用程序 当手机重新启动时 该服务将自动启动 而不是单击该应用程序 这是我的代码 BootCompleteReceiver java package com example newbootservice import a
  • Swift - 带图像的自定义 MKPointAnnotation

    我正在尝试创建一个自定义MKPointAnnotation在地图视图上使用 它看起来非常像苹果照片中使用的那个 我将从服务器检索一些照片及其位置 然后我想显示一个像上面这样的注释 并在注释中包含图像 我目前有一个程序可以添加正常的MKPoi
  • 在 .NET 中序列化数据传输对象

    我有一组数据传输对象 例如很多请求 响应消息类 如 MainRequest MainResponse ShutDown Request ShutDown Response 随着项目的发展 新的课程不断出现 这些类必须从和到进行 反 序列化具
  • Swift 2 中的本地化

    我想本地化我的应用程序 我正在使用 Swift 2 我遵循本教程但我遇到了两个问题 1 两种语言的本地化图像均消失 我以相同的方式本地化了多个图像German and English 对于两种语言 一组图像 图像的 en 和 de 版本 都
  • 什么时候2个虚拟地址可以映射到同一个物理地址?

    这里有一个操作系统 计算机体系结构问题 我正在阅读有关缓存的内容 了解如何虚拟索引缓存是减少地址转换时间的选项 我遇到了以下情况 Virtual cache difficulties include Aliasing Two differe
  • 从 .ui 文件生成 .h 和 .cpp

    假设我有文件about ui 我怎样才能使 关于 h 和 关于 cpp 从我的 ui文件 我必须创建一个 moc文件也 我怎么能够compile创建后看看是否一切都正确发生 如果自动生成不起作用 就像我的情况 您可以使用 uic 手动生成头
  • 如何命名 R 图中由垂直线分隔的 x 轴部分(包 ggplot2)?

    我创建了一个堆积面积图ggplot2并添加了垂直线在某些位置上x axis 我现在想命名sections由这些垂直线分隔开 它的一个示例可能看起来像示例图中所示 也欢迎其他解决方案 我有一个向量breaks x axis 以及间隔名称的向量
  • 为什么ndb中required和default是互斥的?

    在旧的 google appengine 数据存储区 API 中 必需 和 默认 可以一起用于属性定义 使用ndb我得到一个 ValueError repeated required and default are mutally excl
  • 扩展 JFrame 与在程序内创建它

    在使用 Swing 制作应用程序时 我见过人们执行以下两件事之一来创建 JFrame 哪种方法更好 为什么 我是 Java 和编程的初学者 我唯一的学习来源是书籍 YouTube 和 Stack Overflow import import
  • XML 规范化算法在直接调用时与作为 xml 数字签名的一部分调用时给出两个不同的结果?

    当我直接规范化某些 xml 时 与在对其执行数字签名时 在对 xml 进行散列之前也执行相同的规范化算法 相比 我得到了同一个 xml 文档的两个不同的哈希值 我发现数字签名规范化在规范化时包括新行字符 n 和空格字符 而直接算法则不包括
  • 共享对象 (.so)、静态库 (.a) 和 DLL (.so) 之间的区别?

    我参与了一些关于 Linux 中的库的争论 并且想确认一些事情 据我了解 如果我错了 请纠正我 我稍后会编辑我的帖子 在构建应用程序时有两种使用库的方法 静态库 a 文件 在链接时 整个库的副本被放入最终应用程序中 以便调用应用程序始终可以
  • 为什么 WebSocket 被屏蔽?

    我正在遵循 MDN 提供的指南编写 WebSocket 服务器 该指南非常简单易懂 然而 在遵循本教程后 我遇到了来自客户端的 WebSocket 消息发送的框架 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4
  • 将下拉列表转换为单选按钮而不修改 HTML

    所以这是一种特殊情况 我有一个插件 由于合同原因我无法修改 它显示一组下拉菜单 我需要它来显示一组单选按钮 是否有一种 js jquery 方法可以将下拉菜单转换为单选按钮 而无需更改 HTML 请记住 我可以添加内容 我只能直接修改插件
  • 坐标压缩

    问题 您有一个 N x N 网格 1 我尝试用 BFS 解决这个问题 但是对于非常大尺寸的网格来说它太慢了 然后我听说了坐标压缩 有人可以解释什么是坐标压缩 它是如何实现的 我在哪里可以了解更多信息 在广阔的场地上几乎没有什么障碍 如果将字
  • 安装后执行Android代码[重复]

    这个问题在这里已经有答案了 可能的重复 android 中有安装事件吗 我只想在 Android 应用程序安装完成后执行一段代码 此后的代码不应在应用程序中执行 谁能告诉我该怎么做 Reagrds Shankar 我尝试了下面的代码来使这项
  • 转换在编译器/机器级别有什么作用?

    我经常想知道转换在编译器或机器级别到底做了什么 它对内存中的0和1有什么作用 谁能指点我一些好的文献 在引用类型之间进行转换时 转换不会修改各个位 它只是指示编译器 运行时在可能的情况下以特定方式解释这些位 如果由于类型不兼容而无法在编译时
  • 您的 Mac 运行的 OS X 版本低于项目的最低部署目标

    我创建了一个可可框架和测试应用程序来检查框架功能 我使用了 10 9 2 osx 版本 它在 10 9 2 上运行良好 当我在 osx 版本 10 8 5 上运行此程序时 出现以下错误 您的 Mac 运行的 OS X 版本低于项目的最低部署
  • 参考类的并行计算

    我有一个相当大的对象列表 我想并行应用一个复杂的函数 但我当前的方法使用了太多内存 我认为参考类可能会有所帮助 但是使用mcapply修改它们似乎不起作用 该函数修改对象本身 因此我用新对象覆盖原始对象 由于该对象是一个列表 而我只修改了其